kullanarak paramiko üzerinde sudo komutlarını uygulamak başardı için zamanım yok özür AlexS
İnce ayarlı yanıt (şu anda bunu üretimde kullanıyorum):
def sudo_run_commands_remote(command, server_address, server_username, server_pass, server_key_file):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=server_address,
username=server_username,
password=server_pass,
key_filename=server_key_file)
session = ssh.get_transport().open_session()
session.set_combine_stderr(True)
session.get_pty()
session.exec_command("sudo bash -c \"" + command + "\"")
stdin = session.makefile('wb', -1)
stdout = session.makefile('rb', -1)
stdin.write(server_pass + '\n')
stdin.flush()
print(stdout.read().decode("utf-8"))
Bir anahtar dosyası kullanmıyorsanız ve bunun aksine yalnızca parolayı anahtar kullanmıyorsanız, bölümünü kaldırın.
Bu konuyla ilgili bazı notlar, çok komut yeteneğine sahip olmasıdır. Anlamı, 'u root
olarak çalıştırıyor, böylece tek bir işlemde ;
ile ayırarak olabildiğince çok komut alabilirsiniz.
Neden setuid http://en.wikipedia.org/wiki/Setuid? "sudo: Hiçbir tty mevcut ve belirtilen hiçbir askpass programı" senin sudoer olsa şifredir, bu –