fabric -- 切换用户后不能 运行 命令
fabric -- cant run commands after user is switched
我最近接触了 fabric 并试图处理以下问题:
- 访问远程主机
- su root
- 执行命令,例如更改多个用户的密码
- 完成!
请注意,我不能使用 sudo,也不能使用 root 直接连接到远程主机。我需要执行的命令只有在我明确将用户更改为 root 后才能执行。
我能够接近使用 fabric 访问远程主机并使用一些命令的主要概念,但我遇到的问题是一旦我切换到 root "su root" 我无法执行其余的除非我退出。
我尝试处理的示例:
def mytask():
with settings(user="root"):
run('whoami')
run('echo "TEST using root user"')
run('echo "ITS WORKING!!!"')
或类似这样的东西
def mytask():
run ('su root')
run ('passwd testUser')
在这两种情况下,一旦我输入 root 密码,就不会执行任何操作,我会恢复远程命令行,除非我退出回到原始用户。我几乎没有看到关于使用 "fexpect" 作为提示的建议,但不确定这是否会产生影响。
我正在 Linux 环境中开发。
你必须使用 fexpect 和 fexpect 运行 命令
from ilogue import fexpect
prompt = ['Password', 'mypassword'] # ('prompt', 'answer') Case sensitive
def test():
with fexpect.expecting(prompt):
fexpect.local("su -")
我最近接触了 fabric 并试图处理以下问题:
- 访问远程主机
- su root
- 执行命令,例如更改多个用户的密码
- 完成! 请注意,我不能使用 sudo,也不能使用 root 直接连接到远程主机。我需要执行的命令只有在我明确将用户更改为 root 后才能执行。
我能够接近使用 fabric 访问远程主机并使用一些命令的主要概念,但我遇到的问题是一旦我切换到 root "su root" 我无法执行其余的除非我退出。
我尝试处理的示例:
def mytask():
with settings(user="root"):
run('whoami')
run('echo "TEST using root user"')
run('echo "ITS WORKING!!!"')
或类似这样的东西
def mytask():
run ('su root')
run ('passwd testUser')
在这两种情况下,一旦我输入 root 密码,就不会执行任何操作,我会恢复远程命令行,除非我退出回到原始用户。我几乎没有看到关于使用 "fexpect" 作为提示的建议,但不确定这是否会产生影响。
我正在 Linux 环境中开发。
你必须使用 fexpect 和 fexpect 运行 命令
from ilogue import fexpect
prompt = ['Password', 'mypassword'] # ('prompt', 'answer') Case sensitive
def test():
with fexpect.expecting(prompt):
fexpect.local("su -")