发布于2019-08-30 16:20 阅读(1196) 评论(0) 点赞(7) 收藏(0)
要在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
作者:短发越来越短
链接:https://www.pythonheidong.com/blog/article/71645/7eb336c6ca82b777af6a/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!