python3使用paramiko

jopen 11年前

要在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