использовать RADRAD через SSH к удаленному серверу - как повысить права? sudo? - PullRequest
0 голосов
/ 11 июня 2019

Я хочу создать пользователя на удаленной машине.Я могу добраться только через SSH.useradd требует sudo, но приведенный ниже скрипт не запросил у меня пароль и не создал пользователя.Как повысить права на удаленном компьютере?

#!/usr/bin/python3

import os
import subprocess

HOST="192.168.1.71"

#useradd is linux - adduser is perl
addusertoremote = subprocess.Popen(["ssh", "%s" %HOST, "sudo useradd --disabled-login deletetom"],
                       shell=False,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE)
resulta = addusertoremote.stdout.readlines()
if resulta == []:
   errora = addusertoremote.stderr.readlines()
   print(errora)
else:
   print(resulta)

Ответы [ 3 ]

0 голосов
/ 18 июня 2019

Это сработало для меня, хотя я бы не рекомендовал это делать.

proc = subprocess.Popen(["ssh", "dummy", "-t", "sudo -S touch test.txt"], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.STDOUT)


proc.stdin.write(password.encode("utf8"));
proc.stdin.write("\r\n".encode("utf8"))

print(proc.communicate())

После того, как я вошел на хост, файл был создан как root.Кроме того, я использую ключи для входа в систему, поэтому ssh не запрашивает мой пароль, а sudo.

0 голосов
/ 19 июня 2019

Я провел немало исследований по этому вопросу и пришел к следующему выводу.

Ни у Python, ни у Paramiko внутри python нет способа повысить права на достигнутую машину.

Необходимо войти в систему с правами root root AS на компьютере, на котором вы хотите создать пользователя - таким образом, вы уже являетесь пользователем root и приглашение не генерируется.

Итак, в моем случае (который я скоро протестирую) я бы подключил ssh к машине, на которой установлен скрипт python, как я, затем su -s, стал root и запустил скрипт python, который будет иметь root ssh на других машинах. создать учетную запись как root.

0 голосов
/ 11 июня 2019

Вы можете использовать модуль paramiko для SSH в python.

import paramiko
sshsession = paramiko.SSHClient()
sshsession.set_missing_host_key_policy(paramiko.AutoAddPolicy())
sshsession.connect("hostname",username="username",password="password")

stdin, stdout, stderr = sshsession.exec_command('su')
stdin.write("password for root here")

sshsession.exec_command("sudo useradd --disabled-login deletetom")
#other commands here
sshsession.close()
...