Search code examples
pythonsshsudoparamiko

How to run sudo with Paramiko? (Python)


What I've tried:

  1. invoke_shell() then channel.send su and then sending the password resulted in not being root
  2. invoke_shell() and then channel.exec_command resulted in a "Channel Closed" error
  3. _transport.open_session() then channel.exec_command resulted in not being root
  4. invoke_shell() then writing to stdin and flushing it resulted in not being root

Solution

  • check this example out:

    ssh.connect('127.0.0.1', username='jesse', 
        password='lol')
    stdin, stdout, stderr = ssh.exec_command(
        "sudo dmesg")
    stdin.write('lol\n')
    stdin.flush()
    data = stdout.read.splitlines()
    for line in data:
        if line.split(':')[0] == 'AirPort':
            print line
    

    Example found here with more explanations: http://jessenoller.com/2009/02/05/ssh-programming-with-paramiko-completely-different/

    Hope it helps!