ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

利用Paramiko模块实现的SSH自动化工具

2022-05-10 16:32:18  阅读:167  来源: 互联网

标签:username target self command SSH 模块 password port Paramiko


 

 1 import paramiko
 2 import sys
 3 import optparse
 4 
 5 
 6 class SSHClient:
 7     def __init__(self) -> None:
 8         self.target = self.get_params()[0]
 9         self.port = self.get_params()[1]
10         self.username = self.get_params()[2]
11         self.password = self.get_params()[3]
12         self.banner()
13         print('Start to connect the server...')
14         try:
15             self.sshclient = paramiko.SSHClient()
16             self.sshclient.set_missing_host_key_policy(paramiko.AutoAddPolicy())
17             self.sshclient.connect(hostname=self.target, port=self.port,username=self.username, password=self.password)
18         except paramiko.AuthenticationException:
19             print("[-] Your credentials is wrong")
20             sys.exit()
21 
22     def banner(self):
23         banner= """
24                 **************************************************
25 
26                 ********** SSH Client Tool by Jason Wong**********
27 
28                 **************************************************
29         """
30         print(banner)
31     
32 
33     def get_params(self):
34         parser = optparse.OptionParser("Usage: <Program> -t target -p port -u username -P password")
35         parser.add_option('-t','--target', dest='target', type='string', help='Specify target IP address')
36         parser.add_option('-p', '--port', dest='port', default=22, type='int', help="Specify target port")
37         parser.add_option('-u', '--username', dest='username', type='string', help='Specify username')
38         parser.add_option('-P', '--password', dest='password', type='string', help="Specify password")
39         options, args = parser.parse_args()
40         if options.target is None or options.username is None or options.password is None:
41             print(parser.usage)
42             sys.exit(0)
43         return options.target, options.port, options.username, options.password
44     
45     def execute_ssh_command(self, command):
46         try:
47             stdin, stdout,stderr = self.sshclient.exec_command(command)
48             if stdout:
49                 command_result = stdout.read().decode('utf-8')
50             else:
51                 command_result = stderr.read().decode('utf-8')
52             return command_result
53         except Exception as e:
54             print(e)
55             sys.exit(0)
56 
57             
58 
59     def run(self):
60         try:
61             while True:
62                 command = input('%s~ ' % self.target)
63                 if command == 'quit':
64                     break
65                 print(self.execute_ssh_command(command))
66         except KeyboardInterrupt:
67             print("Exit the program")
68             sys.exit(0)
69             
70 
71 if __name__ == "__main__":
72     ssh_client = SSHClient()
73     ssh_client.run()

 

标签:username,target,self,command,SSH,模块,password,port,Paramiko
来源: https://www.cnblogs.com/jason-huawen/p/16254062.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有