Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import getpass
- from argparse import ArgumentParser
- from pathlib import Path
- from paramiko.client import (
- SSHClient,
- MissingHostKeyPolicy,
- )
- def ask_password():
- return getpass.getpass('Please enter password: ')
- def connect(
- hostname,
- username=None,
- password=None,
- pkey=None,
- passphrase=None,
- port=22,
- **kwargs,
- ):
- client = SSHClient()
- client.set_missing_host_key_policy(MissingHostKeyPolicy)
- client.load_system_host_keys()
- client.connect(
- hostname, port=port, username=username, password=password,
- pkey=pkey, passphrase=passphrase,
- )
- return client
- def main(**kwargs):
- if not kwargs['key']:
- kwargs['password'] = ask_password()
- client = connect(**kwargs)
- # here the commands you want to execute
- stdin, stdout, stderr = client.exec_command('ls -l')
- # stdin, stdout, stderr are FileLike objects opened in bytes mode
- print(stdout.read().decode(), stderr.read().decode())
- client.close()
- if __name__ == '__main__':
- parser = ArgumentParser()
- parser.add_argument('hostname', help='Hostname of the host you want to connect')
- parser.add_argument('username', type=str, help='User for login')
- parser.add_argument('--port', type=int, default=22, help='Port of SSH service')
- parser.add_argument('--key', action='store_true', help='Use only private key for login')
- args = parser.parse_args()
- main(**vars(args))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement