要在python3中使用paramiko得先安裝Crypto和 ecdsa這兩個包,linux 要好安裝點,windows下也同樣不過能夠去下Crypto編譯好的for python3的EXE安裝便可, 我就是沒有安裝ecdsa到導安裝後import paramiko時出現ecdsa 和util這兩個錯誤,從新安裝了一下paramiko後就能夠了。 python
myssh.py -h 127.0.0.1 -p 22 -u root -m password "df -h"
myssh.py df -h
若是隻有不想輸參數的話,能夠改文本,寫在裏面了,改了就能夠。 linux
# 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)
下面是執行結果: shell
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地址,端口,用戶,密碼,而後加命令的這種 windows
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