Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import paramiko
- ssh = paramiko.SSHClient()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- ssh.connect('host', username='loginname')
- stdin, stdout, stderr = ssh.exec_command("pwd")
- stdout.readlines()
- Traceback (most recent call last):
- File "audit.py", line 7, in <module>
- ssh.connect('host', username='loginname')
- File "/usr/lib/python2.6/site-packages/paramiko/client.py", line 338, in connect
- self._auth(username, password, pkey, key_filenames, allow_agent, look_for_keys)
- File "/usr/lib/python2.6/site-packages/paramiko/client.py", line 520, in _auth
- raise SSHException('No authentication methods available')
- #!/usr/bin/python
- from StringIO import StringIO
- import paramiko
- class SshClient:
- "A wrapper of paramiko.SSHClient"
- TIMEOUT = 4
- def __init__(self, host, port, username, password, key=None, passphrase=None):
- self.username = username
- self.password = password
- self.client = paramiko.SSHClient()
- self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- if key is not None:
- key = paramiko.RSAKey.from_private_key(StringIO(key), password=passphrase)
- self.client.connect(host, port, username=username, password=password, pkey=key, timeout=self.TIMEOUT)
- def close(self):
- if self.client is not None:
- self.client.close()
- self.client = None
- def execute(self, command, sudo=False):
- feed_password = False
- if sudo and self.username != "root":
- command = "sudo -S -p '' %s" % command
- feed_password = self.password is not None and len(self.password) > 0
- stdin, stdout, stderr = self.client.exec_command(command)
- if feed_password:
- stdin.write(self.password + "n")
- stdin.flush()
- return {'out': stdout.readlines(),
- 'err': stderr.readlines(),
- 'retval': stdout.channel.recv_exit_status()}
- if __name__ == "__main__":
- client = SshClient(host='host', port=22, username='username', password='password')
- try:
- ret = client.execute('dmesg', sudo=True)
- print " ".join(ret["out"]), " E ".join(ret["err"]), ret["retval"]
- finally:
- client.close()
- print stdout.read()
Add Comment
Please, Sign In to add comment