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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!