在远程虚拟机上获取输入

在远程虚拟机上获取输入

下面是我的用例,我必须从用户那里获取需要在远程机器上运行的特定命令的输入。但我的问题是我无法直接访问该机器,所以我正在做什么

SSH 到其他服务器,然后从那里 SSH 到该服务器。但在该服务器上,我们无法从用户那里获取任何输入输出。

以下是示例脚本:-

ssh user@machine1 /bin/bash <<\EOF1

ssh user@machine2 /bin/bash <<\EOF2

pwd
echo " Enter input  :"

read -r input

curl -XPOST -k -H "Content-type: application/json" -d '{ "LOGIN_URL": "https://xyz/login","LOGIN_USER": "[email protected]", "LOGIN_PASSWORD": "xyz", "CID": "'"$input"'" }' 'https://abc/gettoken' > sample

scp sample.txt root@user1:/root

它不要求用户输入并直接跳转到 scp 命令。这也是在 curl 命令中传递变量的正确方法吗?

任何帮助将不胜感激!

答案1

此处文档中的 curl 命令中的 JSON 文档中的 shell 变量不易处理。引用正确非常烦人。尤其是当需要对多个主机执行此操作时。

考虑编写简短的 shell 脚本。本地主机上的包装脚本,提示用户,可能使用stty-echo 命令隐藏敏感值。包装器脚本随后将附加脚本和可能的 JSON 文件通过 sftp 传输到远程服务器并运行它们。考虑使用 JSON 处理器来jq编辑 CID,而不是依赖 shell 变量扩展。

或者,一些自动化工具可以帮助在远程主机上运行命令。例如,Ansible 游戏可以利用vars_prompt关键字来提示密码, uri利用模块来执行 POST,并保存响应。

相关内容