通过SSH通过useradd向远程服务器添加-如何提升权限?sudo?

时间:2019-06-11 16:59:04

标签: python ssh subprocess python-3.5

我想在远程计算机上创建一个用户。我只能通过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 :(得分:0)

您可以在python中将paramiko模块用于SSH。

NameError: name 'v' is not defined

答案 1 :(得分:0)

这对我有用,尽管我不建议这样做。

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要求输入密码。

答案 2 :(得分:-1)

我对此进行了大量研究,并得出以下结论。

Python和python内部的Paramiko都没有一种方法来提升到达的计算机上的权限。

必须在AS根目录中将ssh SSH到要在其上创建用户的计算机上-这样,您已经是root且不会生成提示。

因此,在我的情况下(我将很快进行测试),我将ssh进入具有python脚本的机器,然后su -s并成为root并运行将root ssh进入其他机器的python脚本以root身份创建帐户。