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
又发生了。
答案 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