python3使用paramiko
要在python3中使用paramiko得先安裝Crypto和 ecdsa這兩個包,linux 要好安裝點,windows下也一樣不過可以去下Crypto編譯好的for python3的EXE安裝即可, 我就是沒有安裝ecdsa到導安裝后import paramiko時出現ecdsa 和util這兩個錯誤,重新安裝了一下paramiko后就可以了。
myssh.py -h 127.0.0.1 -p 22 -u root -m password "df -h"
myssh.py df -h
如果只有不想輸參數的話,可以改文本,寫在里面了,改了就可以。
# coding:utf-8 # author:lenglingx import paramiko import sys import getopt #default content argments HOST = "192.168.1.196" PORT = 22 USER = "root" PASSWD = "PASSWORD" CMD = "ls -l" # if len(sys.argv) < 2: print("user : -hlocalhost -pport -uuser -mpasswd progamment argv!!") exit(0) # args = sys.argv[1:] distakv ={} print("agrs:%s"%(args)) arglist,argar = getopt.getopt(args,"h:p:u:m:") print("arglist:%s , argar:%s"%(arglist,argar)) print("*" * 70) print("開始參數處理:") for i in range(len(arglist)) : print("%s => %s "%(arglist[i][0],arglist[i][1])) distakv.setdefault(arglist[i][0],arglist[i][1]) for k in range(len(argar)) : print("argar[%d]:%s "%(k,argar[k])) if len(argar) == 0 : pass else : CMD = " ".join(argar) print("cmd: %s"%(CMD)) print("*" * 70) print("參數處理結束:") if "-h" in distakv.keys() : print("我們開始做 -h ,其值為: %s"%(distakv.get("-h")) ) HOST = distakv.get("-h") print("host: %s"%(HOST)) if "-p" in distakv.keys() : print("我們開始做 -p ,其值為: %s"%(distakv.get("-p")) ) PORT = int(distakv.get("-p")) print("port: %s"%(PORT)) if "-u" in distakv.keys() : print("我們開始做 -u ,其值為: %s"%(distakv.get("-u")) ) USER = distakv.get("-u") print("user: %s"%(USER)) if "-m" in distakv.keys() : print("我們開始做 -m ,其值為: %s"%(distakv.get("-m")) ) PASSWD = distakv.get("-m") print("passwd: %s"%(PASSWD)) ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(HOST,PORT,USER,PASSWD) stdin,stdout,stderr = ssh.exec_command(CMD) result = stdout.read() print("*" * 35 ,"結果","*" * 35) print(result)
下面是執行結果:
D:\Python33\progs>argtest3.py ping -c 4 8.8.8.8 agrs:['ping', '-c', '4', '8.8.8.8'] arglist:[] , argar:['ping', '-c', '4', '8.8.8.8'] ********************************************************************** 開始參數處理: argar[0]:ping argar[1]:-c argar[2]:4 argar[3]:8.8.8.8 cmd: ping -c 4 8.8.8.8 ********************************************************************** 參數處理結束: *********************************** 結果 *********************************** PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=46 time=77.7 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=46 time=74.6 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=46 time=75.1 ms 64 bytes from 8.8.8.8: icmp_seq=4 ttl=46 time=76.0 ms --- 8.8.8.8 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3085ms rtt min/avg/max/mdev = 74.649/75.897/77.748/1.197 ms
下面這個是IP地址,端口,用戶,密碼,然后加命令的這種
D:\Python33\progs>argtest3.py -h192.168.1.196 -p22 -uroot -proot__ df -h agrs:['-h192.168.1.196', '-p22', '-uroot', '-proot__', 'df', '-h'] arglist:[('-h', '192.168.1.196'), ('-p', '22'), ('-u', 'root'), ('-p', 'monitor') ] , argar:['df', '-h'] ********************************************************************** 開始參數處理: -h => 192.168.1.196 -p => 22 -u => monitor -m => monitor argar[0]:df argar[1]:-h cmd: df -h ********************************************************************** 參數處理結束: 我們開始做 -h ,其值為: 192.168.1.196 host: 192.168.1.196 我們開始做 -p ,其值為: 22 port: 22 我們開始做 -u ,其值為: monitor user: monitor 我們開始做 -m ,其值為: monitor passwd: monitor *********************************** 結果 *********************************** Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 6.5G 989M 5.2G 16% / tmpfs 246M 0 246M 0% /dev/shm /dev/sda1 485M 32M 429M 7% /boot
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!