Pugna_zfr 发表于 2014-01-19 23:05

如何使用python执行远程shell脚本?

如何使用python执行远程shell脚本?

即在A主机上执行pythonabc.py脚本,使得远程主机B 执行 保存在 A主机上的shell脚本shellabc.sh(大约100行),并获取B主机执行完shellabc.sh后的输出。
大家有没有好的办法?

openspace 发表于 2014-01-20 08:29

使用 pexpect

Pugna_zfr 发表于 2014-01-20 10:18

谢谢你的建议!
pexpect考虑过,这个好像很复杂,要写交互。而且,现在的需要是有一堆shell要执行,都写交互的话,想想都恐怖啊。
用pexpect的话,感觉还不如直接sftp到远程再本地调用方便。

timespace 发表于 2014-01-20 11:11

坦白说没有免费的午餐,pexpect复杂一点但通用灵活。
另外一种办法就是ssh-keygen/ssh-copy-id,实现自动密钥验证取代手动密码验证,然后就可以直接调用远程‘ssh remote-user@remote-host remote-script.sh’,麻烦之处在于要手动创建与维护两台机器间的公钥。
至于捕获输出,还是要变通一点,既然B都登陆到A了,那么通过临时文件向A输出内容不是更简单吗,这是shell编程中简单有效的办法。

remyzane 发表于 2014-01-20 13:17

本帖最后由 remyzane 于 2014-01-20 13:21 编辑

回复 4# timespace

从楼主的回复看,楼主自己也知道常规的处理原理:
通过交互库登录、上传、执行;设置密钥(自动)登录后直接在本地执行sftp和ssh命令)。
(如果楼主本就知道ssh可以设置密钥(自动)登录)

那楼主你是要哪样?找现成的程序?还是习惯性动脑不动手?

这世界上肯定有现成的类似程序,但是你找到,并搞清楚人家的实现,再稍微做一下整理定制,还是自己实现一下快。

Pugna_zfr 发表于 2014-01-20 22:43

那还是sftp吧
谢谢各位!:lol

sopato 发表于 2014-01-21 20:51

salt就搞定了。。。

mode1943 发表于 2014-01-22 14:03

python的paramiko模块可以

Pugna_zfr 发表于 2014-02-07 12:43

回复 7# sopato


    谢谢!
    刚找了下资料,salt要装客户端。领导希望不要在被管理的机器上额外装软件。

Pugna_zfr 发表于 2014-02-07 12:44

回复 9# Pugna_zfr


    这个我试过,执行单条命令是可以的,执行脚本不行
页: [1]
查看完整版本: 如何使用python执行远程shell脚本?