通过ssh的pythonic远程命令
budgie的Python项目详细描述
布吉[构建状态](https://travis-ci.org/pureDistoration/buggie.png?branch=master)(https://travis ci.org/pureDistoration/buggie)
>通过ssh对服务器进行pythonic远程控制
安装
----
install the library
virtualenv venv&;。venv/bin/activate可选
pip install sh
wget https://raw2.github.com/pureDistoration/budgei/master/budgei.py
您需要为远程主机配置无密码ssh:
ssh keygen-q-t rsa-n'此处是您的密码'-f~/.ssh/id rsa
ssh copy id localhost主机
评估“ssh代理”
ssh add
ssh localhost pwd;测试连接
在` ~/.ssh/config`中创建一个ssh配置文件,描述您的主机:
host localhost
user user
hostname localhost
identityfile~/.ssh/id\u rsa.key
user user
hostname steve mac
identityfile~/.ssh/id_rsa.key
host projects
user
hostname 192.168.1.30
identityfile~/.ssh/projects.key
host prod
user produser
hostname prod.example.com
identityfile~/.ssh/deploy.key
usage
----
可以使用buggie import localhost
print localhost.hostname()中的简单python代码运行远程命令,localhost.uptime()
localhost.touch('/tmp/latest')
budgie.ssh('localhost').uptime()
budgie.ssh('localhost').touch('/tmp/latest')
>传入ssh选项
=--
budgie将允许传入ssh选项。此时,通过bake方法执行此操作的方式与将其传递到sh.ssh()
budgee.localhost.bake('-o','userknownhostsfile=/dev/null','-o','stricthostkeychecking=no').whoami()
budge.ssh().bake('-o','userknownhostsfile=/dev/null','-o','stricthostkeychecking=no','127.0.0.1').whoami()
使用sudo
——
就像在sh sudo中一样,sudo只是被当作另一个budge命令。
因此执行远程命令非常简单:
您需要确保sudo允许与您连接的远程用户通过/etc/sudoers执行命令批处理命令执行。这是通过创建主机组来完成的。主机组将接收主机名或budgee.ssh实例的列表。
web-servers=budgee.host group()
web-servers.add('www1.example.com')
web-servers.add('www2.example.com')
webservers.add(['www1.example.com','www2.example.com'])
www2=budgie.ssh('www2.example.com')
webserver.add([wwww1,www2])
webserver.hostgroup(['wwww1.example.com','www2.example.com'])
www2=budgie.ssh('www2.example.com')
web\u servers.hostgroup([wwww1,www2])
budgee.host group()一旦创建,就可以像标准字典一样与之交互。
可以对主机组执行命令,执行结果将作为字典返回
result=web_servers.whoami()
result将包含
{'www1':'www1.example.com','www2':'www2.example.com'}
running tests
----
可以通过运行
python tests.py
这是应用于生成的当前测试套件
*导入测试
*直接调用转到异常测试
*命令执行(whoami)测试
*主机组创建
*主机组操作(add,移除)
*主机组命令执行(whoami)测试
命令执行测试使用ssh选项,允许自动生成ssh密钥对,并在连接结束时从已知主机中丢弃它们。
>通过ssh对服务器进行pythonic远程控制
安装
----
install the library
virtualenv venv&;。venv/bin/activate可选
pip install sh
wget https://raw2.github.com/pureDistoration/budgei/master/budgei.py
您需要为远程主机配置无密码ssh:
ssh keygen-q-t rsa-n'此处是您的密码'-f~/.ssh/id rsa
ssh copy id localhost主机
评估“ssh代理”
ssh add
ssh localhost pwd;测试连接
在` ~/.ssh/config`中创建一个ssh配置文件,描述您的主机:
host localhost
user user
hostname localhost
identityfile~/.ssh/id\u rsa.key
hostname steve mac
identityfile~/.ssh/id_rsa.key
host projects
user
hostname 192.168.1.30
identityfile~/.ssh/projects.key
host prod
user produser
hostname prod.example.com
identityfile~/.ssh/deploy.key
usage
----
可以使用buggie import localhost
print localhost.hostname()中的简单python代码运行远程命令,localhost.uptime()
localhost.touch('/tmp/latest')
budgie.ssh('localhost').uptime()
budgie.ssh('localhost').touch('/tmp/latest')
>传入ssh选项
=--
budgie将允许传入ssh选项。此时,通过bake方法执行此操作的方式与将其传递到sh.ssh()
budgee.localhost.bake('-o','userknownhostsfile=/dev/null','-o','stricthostkeychecking=no').whoami()
budge.ssh().bake('-o','userknownhostsfile=/dev/null','-o','stricthostkeychecking=no','127.0.0.1').whoami()
使用sudo
——
就像在sh sudo中一样,sudo只是被当作另一个budge命令。
因此执行远程命令非常简单:
您需要确保sudo允许与您连接的远程用户通过/etc/sudoers执行命令批处理命令执行。这是通过创建主机组来完成的。主机组将接收主机名或budgee.ssh实例的列表。
web-servers=budgee.host group()
web-servers.add('www1.example.com')
web-servers.add('www2.example.com')
webservers.add(['www1.example.com','www2.example.com'])
webserver.add([wwww1,www2])
webserver.hostgroup(['wwww1.example.com','www2.example.com'])
web\u servers.hostgroup([wwww1,www2])
budgee.host group()一旦创建,就可以像标准字典一样与之交互。
可以对主机组执行命令,执行结果将作为字典返回
result=web_servers.whoami()
result将包含
{'www1':'www1.example.com','www2':'www2.example.com'}
running tests
----
可以通过运行
python tests.py
这是应用于生成的当前测试套件
*导入测试
*直接调用转到异常测试
*命令执行(whoami)测试
*主机组创建
*主机组操作(add,移除)
*主机组命令执行(whoami)测试
命令执行测试使用ssh选项,允许自动生成ssh密钥对,并在连接结束时从已知主机中丢弃它们。