通过python脚本在远程机器上安装软件

时间:2017-01-08 15:30:36

标签: python unix ssh git-log

这是为了工作...所以我将尽可能多地分享,我正在尝试通过python脚本在远程机器上安装“环境”,这个“环境”需要传递给它用户名和密码,我尝试了很多东西,似乎没有任何工作......最接近的是这个脚本,但是在它通过用户名后弹出一个GUI弹出窗口并要求输入密码......我做错了什么?!或者我该怎么做才能使它工作?!...这里是处理pexpect

的脚本的一部分
import os
import pexpect

cmd = 'ssh -X groupName@machineName cd ~/theLocationOfTheInstallation/ && pwd && theFullPathOfTheFileToInstall'
child = pexpect.spawn(cmd)
cmd_show_data = ''
usr = 'userName'
pas = 'myPassword'
while not child.eof() :
    index = child.expect(['Please enter your.*','pass.*', pexpect.EOF, pexpect.TIMEOUT])
    cmd_show_data += child.before
    child.delaybeforesend = 1
    if index == 0 :
        print 'user name required, "'+usr+'" is passed'
        child.sendline(usr)
    elif index == 1 :
        print 'password required, "'+pas+'" is passed'
        child.sendline(pas)
    elif index == 2 :
        print 'EOF'
    elif index == 3 :
        print 'TIMEOUT'
cmd_show_data += child.before
cmd_show_data  = cmd_show_data.split('\r\n')
for s in cmd_show_data :
    print s

这是弹出的GUI: enter image description here 如果我手动输入密码(我试图避免),我得到这样的输出:

user name required, "userName" is passed
TIMEOUT
TIMEOUT (a lot of times out)
user name required, "userName" is passed
TIMEOUT
TIMEOUT (a lot of times out)
password required, "myPassword" is passed
TIMEOUT
TIMEOUT (a lot of times out).... till the installation is complete.

所以..任何想法?

1 个答案:

答案 0 :(得分:0)

如果你真的只想用Python做这个工作,为什么不能用Ansible呢?

Ansible解决方案:

如果您有一个在本地安装软件的脚本,那么使用Ansible脚本模块在远程服务器中运行该脚本

# Example from Ansible Playbooks
- script: /some/local/script.py 1234

Python文件示例:

#!/usr/bin/python

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print '1st Argument :', str(sys.argv[1])

以下是一些文档链接:

http://docs.ansible.com/ansible/script_module.html

http://docs.ansible.com/ansible/intro_adhoc.html