Есть задача: раскидать на более чем 150 одинаково настроенных ПК (Ubuntu 10.04) файлик в /etc. Естесственно для этого нужны права рута…
Погуглив, собрал вот такой код.
#!/usr/bin/python
import sys
import paramiko
import termios
def sshpipe(host, line) :
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect("ip",username="user",password="pass")
stdin, stdout, stderr = client.exec_command("sudo -s")
stdin, stdout, stderr = client.exec_command("cp /home/crontab /etc/")
stdin.write('pass\n')
stdin.flush()
output = stdout.read()
sys.stdout.write(output)
stdin.close()
stdout.close()
stderr.close()
client.close()
sshpipe(sys.argv[0], sys.argv[0])
May 24 11:43:01 pc079 sshd[12770]: Accepted password for user from IP port 48669 ssh2
May 24 11:43:01 pc079 sshd[12770]: pam_unix(sshd:session): session opened for user user by (uid=0)
May 24 11:43:01 pc079 sudo: user : no tty present and no askpass program specified ; TTY=unknown ; PWD=/home/user ; USER=root ; COMMAND=/bin/bash
May 24 11:43:01 pc079 sshd[12770]: pam_unix(sshd:session): session closed for user user