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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我的int值在SharedReferences中不被记住   java如何编辑Spring可分页对象?   java如何在gradle中单独调用任务   jvm以编程方式设置最大java堆大小   java如果满足多个条件,如何使用If语句计算数字?   如何在java中从json文件中获取特定值   如何在Sphinx4中为Java语音识别添加自定义语法?   java int[]copy=data;//当数据是数组时会发生什么?   java豪猪管理器。停下来。destroy()不起作用   安卓在API级别28中找不到画布变量   基于SOLID的java冗余   用于talend作业的java Liferay和portlet   从java到安卓的视频流   java获取在控件的类定义中添加自定义控件的场景大小   awt Java IndexOutOfBoundsException   java如何使用Spring JmsTemplate更改MQ头   java遍历数组并打印每个对象   java Google Map api v2标记在我旋转手机和地图“刷新”之前不会移动