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
_______________________________________________
Fab-user mailing list
Fab-user@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fab-user