openssh python包装器
openssh-wrapper的Python项目详细描述
在某些情况下,openssh ssh命令行的简单包装 公用事业似乎比帕拉米科机械更可取。
这个项目在ssh到 在远程服务器上执行命令。你只需要确保 安装openssh客户端和python解释器,然后安装 openssh包装器包。
使用示例
简单的命令执行
>>> from openssh_wrapper import SSHConnection >>> conn = SSHConnection('localhost', login='root') >>> ret = conn.run('whoami') >>> print ret command: whoami stdout: root stderr: returncode: 0 >>> ret.command 'whoami' >>> ret.stdout 'root' >>> ret.stderr '' >>> ret.returncode 0
如果python解释器安装在远程机器上,您还可以运行 远程的python代码。其他任何能 从stdin执行代码
>>> ret = conn.run('whoami') >>> print conn.run('print "Hello world"', interpreter='/usr/bin/python').stdout Hello world
另一个用户可用的run方法选项是forward ssh_agent(这个特性 帕拉米科还没有)。假设您可以访问foobar作为支持 服务器而root@localhost没有,因此您可以利用ssh代理 转发
$ eval `ssh-agent` Agent pid 5272 $ ssh-add Identity added: /home/me/.ssh/id_rsa (/home/,e/.ssh/id_rsa) $ python >>> conn = SSHConnection('localhost', login='root') >>> print conn.run('ssh support@foobar "whoami"', forward_ssh_agent=True).stdout support
有一个示例演示如何将文件从本地复制到 远程机器。您还可以定义目标的所有者和模式
>>> fd = open('test.txt', 'w') >>> fd.write('Hello world') >>> fd.close() >>> from openssh_wrapper import SSHConnection >>> conn = SSHConnection('localhost', login='root') >>> conn.scp(('test.txt', ), target='/tmp', mode='0666', owner='nobody:') >>> print conn.run('cat /tmp/test.txt').stdout Hello world >>> print conn.run('ls -l /tmp/test.txt').stdout -rw-rw-rw- 1 nobody nogroup ... /tmp/test.txt
也可以将类似文件的对象(而不是文件名)传递给scp方法。在后面 方法为您创建临时文件的场景,将它们发送到远程 然后删除已创建的所有内容:
>>> from StringIO import StringIO >>> data = StringIO('test') >>> from openssh_wrapper import SSHConnection >>> conn = SSHConnection('localhost', login='root') >>> conn.scp((data, ), target='/tmp/test.txt', mode='0644') >>> print open('/tmp/test.txt').read() test