最近有需求要配置十几台机器,如果一台一台的去配置,太麻烦了,不是咱的风格,正好用python搞,目前功能还比较简陋而且重叠太多,先凑合着用吧,有时间再优化:
#!/usr/bin/python2.7
#coding:utf-8
import pexpect
import threading
_IPLIST = ['192.168.1.%s' % str(s) for s in range(103, 104)]
_CMDLIST = ['mkdir /home/test/work/test', 'touch /home/test/work/test/test.log', 'echo "test" >> /home/test/work/test/test.log']
_USER = 'root'
_PWD = 'root'
def doSSH(user, pwd, ip, cmdlist):
ssh = pexpect.spawn('ssh %s@%s' % (user, pwd))
try:
r = ssh.expect(['password:', 'continue connecting (yes/no)?'], timeout=30)
print r
if 0 == r:
ssh.sendline(pwd)
elif 1 == r:
ssh.sendline('yes')
ssh.expect("password:")
ssh.sendline(pwd)
for cmd in cmdlist:
ssh.sendline(cmd)
result = ssh.read()
print result
except pexpect.EOF:
print "EOF"
except pexpect.TIMEOUT:
print "Connected time out"
finally:
ssh.close()
def doSCP(user, pwd, ip, source, dest):
scp = pexpect.spawn('scp %s %s@%s:%s' % (source, user, ip, dest))
try:
r = ssh.expect("")
except pexpect.EOF:
print "EOF"
except pexpect.TIMEOUT:
print "Connected time out"
finally:
scp.close()
if __name__ == "__main__":
for i in _IPLIST:
threading.Thread(target=doSSH, args=(_USER, _PWD, i, _CMDLIST)).start()
# doSSH(_USER, _PWD, i, _CMDLIST)