robotframework - 在远程主机上的命名空间内运行守护程序。(机器人框架)
问题描述
我在 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)
也许有人对这种行为有解释?或者关于我如何以其他方式做同样的事情的任何建议?
感谢您的时间!
解决方案
如果可以以 root 身份登录,请添加您的公钥并使用关键字登录
Login With Public Key
。如果您无法以 root 用户身份连接到服务器,请尝试使用交互式 shell
像这样
Write sudo su
Write valid_sudo_password
Write ${cmd}
推荐阅读
- javascript - 新的 Image src 属性和 base64 图像问题 - trucation
- .net - 给定场景中有效提及检测的正则表达式
- excel - 如何在 Laravel 的 Excel 报表中添加标题?
- python - Numpy删除重复项,应用函数,然后将其添加回来
- python - 列表/嵌套列表中的第一个元素
- amazon-web-services - AWS CodeArtifact - 有没有办法定义 LifeCycle 策略?
- c++ - 每条线段包含一个点的最小点数
- jquery - 使用不带 _chartjs 的 json 获取数组:{...},push:ƒ,pop:ƒ,shift:ƒ,splice:ƒ,...]
- json - 这个 JSON 文件有什么问题?无法反序列化
- c++ - 使用 resource.rc 时,Windows 资源管理器中的图标显示 2 个不同的图标