需求:
机器A上执行Python代码登录连接到机器B,然后在机器B上执行命令
实现
#!/usr/bin/env python
#coding=utf-8
import paramiko, getpass,sys,traceback
class sshDemo():
def login_by_passwd(self, ip, port, username, passwd):
self.ip = ip
self.port = port
self.username = username
self.passwd = passwd
self.pkey = None
def login(self, username, key_path, passwd):
try:
self.pkey=paramiko.RSAKey.from_private_key_file(key_path)
except paramiko.PasswordRequiredException:
if not passwd:
passwd = getpass.getpass('RSA key password: ')
self.pkey = paramiko.RSAKey.from_private_key_file(key_path, passwd)
def ssh(self,shell):
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
if self.pkey:
ssh.connect(self.ip, self.port, self.username, compress = True, pkey= self.pkey)
else:
if not self.passwd:
self.passwd = getpass.getpass('input password: ')
ssh.connect(self.ip,self.port,self.username, self.passwd)
stdin, stdout, stderr = ssh.exec_command(shell)
res = stdout.readlines()
ssh.close()
return res
except:
type, value, tb = sys.exc_info()
return traceback.format_exception(type, value, tb)
if __name__ == '__main__':
myssh = sshDemo()
myssh.login("10.10.10.10",22,"nio4444","nio4444")
myssh.ssh("cd /tmp/ && tar -zcf fstab.tgz fstab")