使用Slack Webhook通过curl发送终端命令的输出



为了上下文起见,我正在开发一个允许;远程";访问NVidia Xavier。不幸的是,在目前的外壳中,除非将整个单元拆开,否则显示端口会完全堵塞。USB端口可用,用于连接无线键盘&老鼠我已经编写了一个Gstreamer管道,我可以通过SSH执行它,它将捕获显示并将其流式传输到另一台本地机器。

我正在运行的问题是,由于该单元是可移植的,它所连接的网络和随后的IP将不断变化,但我需要知道它才能SSH进入该单元。

我正在尝试编写一个(我认为很简单(bash脚本,该脚本将在启动时通过网络挂钩将时间戳和单元的IP发送到Slack通道,该网络挂钩实际上是以下命令(IP和Slack URL通用(:

curl -X POST -H 'Content-type: application/json' --data '{"text":"Tue Jul 14 15:26:50 EDT 2020 IP: XX.X.X.XX"}' https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX

每次运行脚本时,JSON负载都会发生变化,具体取决于hostname -Idate的结果。

我试着用创建一个数组,其中包含所需的数据

command=( -X POST -H 'Content-type: application/json' --data '{"text":")

command+=("$(date)")

command+=("$(hostname -I)")

command+=("}' https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX)

curl command

但是接收到错误CCD_ 9。

我几乎没有编写bash脚本的经验,可能会错过一些其他人都非常明显的东西。但是,使用echo "${command[*]}"确实会显示与工作命令匹配的输出。如有任何建议,我们将不胜感激。

在bash中使用变量时,这是一个常见的错误-在设置变量时,不使用$作为前缀,但在引用变量时,必须使用$作为前缀才能进行扩展。因此,在您的情况下,您可能希望使用:curl $command而不是curl command

最新更新