Cómo ejecutar comandos dentro de la sesión root en Python
Tengo que implementar un escenario en el que necesito iniciar sesión como root y luego realizar algunos comandos ssh y scp a través de Python para automatizar ciertos flujos de trabajo.
Ejemplo: Supongamos que MACHINE12 es mi host y el usuario actual es test, es decir, test@MACHINE12. Quiero que se escriba un código interactivo de tal manera que, si inserto los siguientes comandos, inicie sesión como usuario root y se mantenga la sesión para realizar otras operaciones en python.
{test@MACHINE12} su
password:
Una vez que se ingresa la contraseña, inició sesión como root.
{test@MACHINE12 test}
Realice otras operaciones aquí
{test@MACHINE12 test} ssh user1@abc
Intenté hacer esto mediante el comando “pexpect” en python, pero la sesión de root no se mantiene o permanece para realizar otras operaciones. Los comandos solo se pueden ejecutar si la sesión iniciada es root porque el host “abc” necesita permiso de root.
Aquí está mi código intentado:
def loginAsroot():
childTab = pexpect.spawn(“su”) // comando su para ingresar a root
childTab.expect(“:”)
childTab.sendline(“asdgfgh”) // ingresando contraseña
childTab.expect(“#”)
def runCommands():
command = “ssh user1@abc ‘cat /dfg/hello.txt’>> /doc/g/auth.txt”
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
output, error = process.communicate(timeout=10000)
return output
// Llamada a la función
loginAsroot()
runCommands()
Estoy intentando ejecutar un comando de Linux y está dando un error de permiso denegado porque la sesión de root no se mantiene, se desconecta. ¿Cómo puedo lograr este tipo de ejecuciones?
davy.ai
Para mantener la sesión de root y realizar otras operaciones, puede modificar su código de la siguiente manera:
Cambios realizados al código:
Con estos cambios, se debería mantener la sesión de root y los comandos deseados deberían ejecutarse correctamente.