使用Python与远程计算机接口
我刚刚成为我研究小组集群的系统管理员,还是个新手。现在我想做一些工具来监控网络,需要一些帮助来用Python(我最熟悉的语言)开始实现这些工具。
比如,我想查看谁登录到了远程机器上。手动操作的话,我会用ssh连接,然后输入who
命令,但我该怎么把这些信息放到脚本里去处理呢?类似这样的:
import remote_info as ri
ri.open("foo05.bar.edu")
ri.who()
Out[1]:
hutchinson tty7 2009-08-19 13:32 (:0)
hutchinson pts/1 2009-08-19 13:33 (:0.0)
还有像cat /proc/cpuinfo
这样的命令,用来获取节点的处理器信息。能给我一个起步的建议就太好了。谢谢!
6 个回答
1
pexpect模块可以帮助你与ssh进行交互。大致上,你的例子会是这样的。
child = pexpect.spawn('ssh servername')
child.expect('Password:')
child.sendline('ABCDEF')
(output,status) = child.sendline('who')
2
这里有一个简单又便宜的解决方案,可以帮助你入门。
from subprocess import *
p = Popen('ssh servername who', shell=True, stdout=PIPE)
p.wait()
print p.stdout.readlines()
返回的结果(例如):
['usr pts/0 2009-08-19 16:03 (kakapo)\n',
'usr pts/1 2009-08-17 15:51 (kakapo)\n',
'usr pts/5 2009-08-17 17:00 (kakapo)\n']
关于cpuinfo的信息:
p = Popen('ssh servername cat /proc/cpuinfo', shell=True, stdout=PIPE)