ssh登录服务器并执行命令
#使用password方式登录服务器 import paramiko hostname = '192.168.1.1' username = 'root' password = '123456' command = 'ip a' ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname=hostname,username=username,password=password) stdin,stdout,stderr = ssh.exec_command(command) print stdout.readlines() ssh.close()
#使用key方式登录 import paramiko hostname = '192.168.1.1' username = 'root' port = 22 command = 'ip a' ssh = paramiko.SSHClient() ssh.load_system_host_keys() privatekey = os.path.expanduser('id_rsa') key = paramiko.RSAKey.from_private_key_file(privatekey) ssh.connect(hostname=hostname,username=username,pkey=key) stdin,stdout,stderr = ssh.exec_command(command) print stdout.readlines() ssh.close()
#上传单个文件
sftp = paramiko.Transport((hostname,port)) sftp.connect(username=username,password=password) sftpssh = paramiko.SFTPClient.from_transport(sftp) localpath = '/usr/local/src/filename' remotepath = '/usr/local/src/filename' sftpssh.put(srcfilename,uploadfilename) sftp.close()
#上传目录下的多个文件 sftp = paramiko.Transport((hostname,port)) sftp.connect(username=username,password=password) sftpssh = paramiko.SFTPClient.from_transport(sftp) localpath = '/usr/local/src' remotepath = '/usr/local/src' for file in os.listdir(localpath): srcfilename = os.path.join(localpath,file) uploadfilename = os.path.join(remotepath,file) sftpssh.put(srcfilename,uploadfilename) sftp.close()
#下载远程服务器上的目录下的多个文件 command = 'cd /usr/local/src && ls' ssh = paramiko.SSHClient() ssh.set_missing_key_host_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname=hostname,username=username,password=password) stdin,stdout,stderr = ssh.exec_command(commnad) files = stdout.readlines() sftp = paramiko.Transport((hostname,port)) sftp.connect(username=username,password=password) sftpssh = paramiko.SFTPClient.from_transport(sftp) for file in files: file = file.strip('\n') filename= os.path.join(localpath,file) downloadfilename= os.path.join(remotepath,file) sftpssh.get(downloadfilename,filename) sftp.close()
转载于:https://blog.51cto.com/j99d99/1831255