【问题标题】:Run a daemon within a namespace on a remote host. (Robot Framework)在远程主机上的命名空间内运行守护程序。 (机器人框架)
【发布时间】:2021-07-13 17:36:24
【问题描述】:

我正在 Robot Framework 中编写一个关键字,它应该连接到某个远程主机并在此远程主机上呈现的网络名称空间内启动一个守护程序/服务器(例如 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 Server(18.04.3)

也许有人对此行为有解释?或者对我如何以其他方式做同样的事情有什么建议?

感谢您的宝贵时间!

【问题讨论】:

    标签: robotframework


    【解决方案1】:
    1. 如果可以以 root 身份登录,请添加您的公钥并使用关键字 Login With Public Key 登录。

    2. 如果您无法以 root 用户身份连接到服务器,请尝试使用交互式 shell

    这样

    Write  sudo su
    Write  valid_sudo_password
    Write  ${cmd}
    

    【讨论】:

    • 我选择了带有交互式外壳的第二个选项,它对我有用!感谢您的帮助!
    • 很高兴听到,不要忘记接受答案作为解决方案。
    猜你喜欢
    • 2016-03-31
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 2018-02-25
    • 1970-01-01
    相关资源
    最近更新 更多