如何通过 SSH 执行 curl 命令

时间:2021-02-24 02:28:34

标签: linux shell curl ssh

env = GNU bash,版本 4.2.46(2)-release (x86_64-redhat-linux-gnu)

情况:
SystemA=没有互联网。 SystemB=是互联网。
SystemA 有一个日志文件。 SystemA 希望 SystemB 为他发送 curl 命令。

系统A$
ssh SystemB curl -X POST -H "Content-type: application/json" -d "$data" $hook = 失败

系统B$
curl -X POST -H "Content-type: application/json" -d "$data" $hook = 成功

如何在没有 SystemA 将日志文件“scp”到 SystemB 的情况下实现这一点?
它与日程安排密切相关,所以我希望 SystemA 让 SystemB 工作。


编辑: 我缩小了问题的范围:

在系统B上:

curl -X POST -H "Content-type: application/json" -d '{$data}' $hookurl = 成功
curl -X POST -H "Content-type: application/json" -d {$data} $hookurl = 失败

所以当我输入 SystemA
ssh SystemB curl -X POST -H "Content-type: application/json" -d "{$data}" $hookurl
它实际上在 SystemB 上与 -d {$data} 一起运行。我该如何解决这个问题?


更新:
ssh SystemB curl -X POST -H "Content-type: application/json" -d "'{$data}'" $hookurl

确实有效并实际将数据发送到 url, 但是 curl: (6) Could not resolve host: application; Unknown error 又发生了。

2 个答案:

答案 0 :(得分:0)

也许使用 sshfs

在系统B上

sshfs -p'ssh port' -o password_stdin user@systemA:/home/user/dir /home/user/dir <<< 'passwd'

答案 1 :(得分:0)

你可以使用这个命令:

ssh SystemB /bin/bash <<< "$(declare -p data hook);"'curl -X POST -H "Content-type: application/json" -d "$data" "$hook"'

"$(declare -p data hook);" 从 SystemA 获取变量定义并将它们传递给 SystemB