通过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密钥对,并在连接结束时从已知主机中丢弃它们。






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

推荐PyPI第三方库


热门话题
OS X上的macos Java DTrace桥   java[]int和int[]之间有什么区别   sonarqube Java 8将两个空检查替换为可选   java按后退按钮进入另一个活动   从Java创建HTML表,检查TD是否已经在它的右边有一个TD   java将十进制128序列化为JSON   java SimpleDataFormat以不同语言返回字符串日期   java通过某个键将<Long,List<String>>映射到字符串Lambda的列表   java中为二维数组赋值时出现的问题   java通过nativeimage编译spring启动应用程序   @QueryParam+@PathParam的java日期参数   Java:startsWith()具有不同的前缀,而不仅仅是一个   java执行器服务。调用所有(超时,时间单位)与未来。获取(超时,时间单位)   java中检查空引用的乐观方法