fab-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Fab-user] Fabric 2.4.0 problem - Run method is not being finished


From: Mateusz
Subject: [Fab-user] Fabric 2.4.0 problem - Run method is not being finished
Date: Fri, 28 Dec 2018 22:31:31 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1

Hi There,

I'm trying to use fabric library to control subprocesson on linux device. I've prepared a piece of code, which intention is to log as a root user.
I can't use "sudo" method because that is not existing on the system that i want to control. Also logging directly as "root" is impossible. My idea is to log as a "admin" user and then use "su" command to switch to "root" user.

Code:

from fabric import Connection
from invoke import Responder

sudopass = Responder(pattern=r'Password:', response='adminPassword\n')

with Connection('192.168.0.106', user="admin", port=22, connect_kwargs={"password": "admin"}) as dss:
    command = "uname -s"
    print("Response on {} is: {}".format(command, dss.run(command)))
    command = "whoami"
    print("Response on {} is: {}".format(command, dss.run(command)))
    command = "su"
    print("Response on {} is after executing su command: {}".format(command,
                                                                    dss.run(command, pty=True, watchers=[sudopass])))
    command = "whoami"
    print("Response on {} is: {}".format(command, dss.run(command)))
print("Script end")

Output:

Linux
Response on uname -s is: Command exited with status 0.
=== stdout ===
Linux

(no stderr)
dssadmin
Response on whoami is: Command exited with status 0.
=== stdout ===
dssadmin

(no stderr)
Password: 
/home/dssadmin # 

As you can see script got stuck after sending "su" command. Any ideas how to solve that?

I'm using:
Python 3.7
Fabric 2.4.0


Thanks in advance

Mateusz Glowinski


reply via email to

[Prev in Thread] Current Thread [Next in Thread]