简单命令操作执行要是删除修改请慎重,使用请慎重个人脚本欢迎提供各种意见。
使用的时候需要一份包含主机名和密码的文件
./remote_cmd.py -e FILENAME就可以生成一个例子。
2,配置号文件之后可以运行 ./remote_cmd.py -f FILENAME -c CMD
运行结果如下
#!/usr/bin/env python
#-*- coding:utf-8 -*-
'''
Author: Aileo
Date:2013-08-19
Version:1.0.0
'''
import re
import pexpect
from optparse import OptionParser
#import os
#print os.getcwd()
parser = OptionParser()
parser.add_option("-f","--file",dest="filename",help="read info from FILE",metavar="FILE")
parser.add_option("-c","--cmd",dest="cmd",help="enter your command",metavar="CMD")
parser.add_option("-e","--exam",dest="exam",help="create an example example.cfg",metavar="example.cfg")
(options,args) = parser.parse_args()
def ssh_cmd(ip, passwd, port, cmd):
ret = -1
ssh = pexpect.spawn('ssh -p %s root@%s %s' %(port, ip, cmd))
try:
i = ssh.expect(['Password:', 'continue connecting (yes/no)?'], timeout=5)
if i == 0 :
ssh.sendline(passwd)
elif i == 1:
ssh.sendline('yes\n')
ssh.expect('Password: ')
ssh.sendline(passwd)
ssh.sendline(cmd)
r = ssh.read()
print r
ret = 0
except pexpect.EOF:
print "EOF"
ssh.close()
ret = -1
except pexpect.TIMEOUT:
print "TIMEOUT"
ssh.close()
ret = -2
return ret
def exhostcfg(judge):
examples = '''
#Hostname|IP password ssh_port|default{22}
Gentoo-128 xindong 22
Gentoo-214 xindong 1688'''
f = file(judge,"w")
f.write(examples)
f.close
print "Create a example %s" %judge
def main(cmd):
Hosts_file = open(options.filename,'r')
for line in Hosts_file.readlines():
reject = re.match(r"^#|^\s+",line)
if reject:
pass
else:
p = re.compile(r'\s+')
Hostname = p.split(line)[0]
Password = p.split(line)[1]
Port = p.split(line)[2]
# method = p.split(line)[3]
print Hostname, ":_________________"
ssh_cmd(Hostname, Password, Port, cmd)
if __name__ == '__main__':
if options.cmd and options.filename:
main(options.cmd)
elif options.exam :
exhostcfg(options.exam)
else:
print "argvs error,please use --help for more information"
转载于:https://blog.51cto.com/zhlccna/1278874