其他分享
首页 > 其他分享> > 利用Paramiko模块实现的SSH自动化工具

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

作者:互联网

 

 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