运行 远程主机上命名空间中的守护进程。 (机器人框架)
Run a daemon within a namespace on a remote host. (Robot Framework)
我正在 Robot Framework 中编写一个关键字,它应该连接到某个远程主机并在该远程主机上显示的网络名称空间内启动 daemon/server(例如 SSH 守护程序)。我正在使用 SSHLibrary 建立与远程主机的连接,并执行应启动给定守护进程的命令。关键字示例如下。
Start daemon
${cmd}= Set Variable ip netns exec NAMESPACE CMD_TO_START_DAEMON
Open connection REMOTE_HOST
Login USERNAME PASSWORD
${output}= Execute Command ${cmd} return_rc=True sudo=True sudo_password=SUDO_PSWD
Should Be Equal As Integers ${output}[1] 0
问题是,此实现不会启动任何内容。关键字也没有报错。输出如下所示:
${output} = [sudo] password for USERNAME:
sudo密码正确。如果我直接在远程主机的终端中执行相同的命令,它会完美运行。如果我尝试启动守护进程,不是在命名空间中,而是在远程主机上使用“执行命令”-关键字,它也可以工作。关键字也做得很好,如果我只想在命名空间内执行命令,但随后我尝试启动守护进程,我总是 运行 陷入这个问题。
同样的问题,如果我使用“开始命令”-关键字而不是“执行命令”。
远程主机是Ubuntu服务器(18.04.3)
也许有人对此行为有解释?或者关于我如何以其他方式做同样的事情的任何建议?
感谢您的宝贵时间!
如果可以以 root 身份登录,请添加您的 public 密钥并使用关键字 Login With Public Key
.
登录
如果您无法以 root 用户身份连接到服务器,您可以尝试使用交互式 shell
像这样
Write sudo su
Write valid_sudo_password
Write ${cmd}
我正在 Robot Framework 中编写一个关键字,它应该连接到某个远程主机并在该远程主机上显示的网络名称空间内启动 daemon/server(例如 SSH 守护程序)。我正在使用 SSHLibrary 建立与远程主机的连接,并执行应启动给定守护进程的命令。关键字示例如下。
Start daemon
${cmd}= Set Variable ip netns exec NAMESPACE CMD_TO_START_DAEMON
Open connection REMOTE_HOST
Login USERNAME PASSWORD
${output}= Execute Command ${cmd} return_rc=True sudo=True sudo_password=SUDO_PSWD
Should Be Equal As Integers ${output}[1] 0
问题是,此实现不会启动任何内容。关键字也没有报错。输出如下所示:
${output} = [sudo] password for USERNAME:
sudo密码正确。如果我直接在远程主机的终端中执行相同的命令,它会完美运行。如果我尝试启动守护进程,不是在命名空间中,而是在远程主机上使用“执行命令”-关键字,它也可以工作。关键字也做得很好,如果我只想在命名空间内执行命令,但随后我尝试启动守护进程,我总是 运行 陷入这个问题。 同样的问题,如果我使用“开始命令”-关键字而不是“执行命令”。
远程主机是Ubuntu服务器(18.04.3)
也许有人对此行为有解释?或者关于我如何以其他方式做同样的事情的任何建议?
感谢您的宝贵时间!
如果可以以 root 身份登录,请添加您的 public 密钥并使用关键字
登录Login With Public Key
.如果您无法以 root 用户身份连接到服务器,您可以尝试使用交互式 shell
像这样
Write sudo su
Write valid_sudo_password
Write ${cmd}