1. 程式人生 > 其它 >利用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()