1、通過(guò)paramiko模塊連接主機(jī)運(yùn)行bash命令,模擬xshell功能猜敢,只能運(yùn)行有返回值的命令,比如cd就運(yùn)行不了盒延,另外缩擂,ansible的底層也是paramiko模塊寫(xiě)的。
import paramiko? ? #第一次需要pip安裝一下模塊? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? hostname = '192.168.7.129'? ? ? ? ? ? ?#連接主機(jī)的ip? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? port = 22? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? username = 'root'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? password = '123'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #登錄密碼? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ssh = paramiko.SSHClient()? ? ? ? ? ? ? #聲明一個(gè)實(shí)例? ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #policy策略添寺,忽略/root/.ssh/known_hosts胯盯,直接登錄? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ssh.connect(hostname=hostname, port=port, username=username, password=password)? ? ? ? while True? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cmd = input('===>:')? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??stdin, stdout, stderr = ssh.exec_command(cmd)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print(stdout.read().decode('utf-8'))
2、paramiko模塊實(shí)現(xiàn)linux和windows之間的互相上傳计露、下載文件? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
通過(guò)paramiko模塊連接主機(jī)從linux中下載到Windows中
import paramiko? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? hostname = '192.168.7.129'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? port = 22? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? username = 'root'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? password = '123'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? t = paramiko.Transport((hostname, port))? #實(shí)現(xiàn)ftp功能博脑,聲明ftp實(shí)例t.connect(username=username, password=password)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? sftp = paramiko.SFTPClient.from_transport(t)? ? ? ? sftp.get('/root/1.py',r'C:\Users\Administrator\Desktop\1.py')???????????????????????????????????????????????????????????sftp.close()
從Windows中上傳到linux中只需要把倒數(shù)第二行改為:
sftp.put(r'C:\Users\Administrator\Desktop\1.py', '/root/1.py')