想要登录到机器上去,切换到用户runjob-admin
,在脚本里写了命令sudo su - runjob-admin;
,但是完成不能执行。导致接下来的进入文件夹和创建新文件都失败了
import subprocess
def run_command(cmd_list):
process = subprocess.run(cmd_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True,timeout=60)
if process.returncode != 0:
return None, process.stderr
return process.stdout, None
def run(client,ip):
scipt = """
sudo su - runjob-admin;
cd lisi/runjob/;
touch xxxxxxxxxxxxx.py;
"""
cmd = [client, ip]
cmd.extend(scipt.split())
output, err = run_command(cmd)
print(output)
if err is not None:
return
try:
data = eval(output)
except Exception as e:
return
return data
date = run("jobtool-ssh", "10.10.1.1")#jobtool-ssh 是一个内部登录工具
1
msg7086 2022-01-26 02:38:05 +08:00
一个普通进程是没有办法提权到超级用户的,除非是有严重的提权安全漏洞。
在你的代码里,sudo 是 root 权限运行的,所以 sudo 内部(比如用 sudo 运行的程序,或者用 sudo 启动的 shell )可以以 root 权限运行。一旦速度结束,root 权限也就结束了。 sudo su - runjob-admin; ↑这里 root 权限开始。 ↑这里 root 权限结束。 |
2
Yadomin 2022-01-26 02:46:35 +08:00 via Android
sudo -u user command
|
3
Buges 2022-01-26 07:06:34 +08:00 via Android
|
4
iScout 2022-01-26 08:58:53 +08:00 via Android
sudo 只能管到第一个分号,后面的没有 sudo 权限
|
5
zhaohui318 2022-01-26 10:20:23 +08:00 1
|
6
szxczyc OP @zhaohui318 这个方法是好的,但是如果我想要跑一个 ansible-playbook 的任务并且拿到返回值这样是不是就不行了~
|
7
Kinnice 2022-01-27 11:05:26 +08:00 via Android
登录 runjob-admin 账号,进行操作。
|
8
abw 2022-01-27 16:16:19 +08:00
试下 sshpass:sshpass -p <passwd> ssh <user>@<host> "echo <passwd> | sudo -S <command>"
|