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

时间:2020-07-14 21:11:39

标签: arrays bash curl slack-api

出于上下文考虑,我正在开发一个系统,该系统将允许“远程”访问NVidia Xavier。不幸的是,除非将整个设备拆开,否则显示端口在其当前外壳中被完全阻塞。提供一个USB端口,该端口用于连接无线键盘和鼠标。我已经编写了一个可以通过SSH执行的Gstreamer管道,它将捕获显示并将其流式传输到另一台本地计算机。

我遇到的问题是,由于该单元是便携式的,它所连接的网络以及随后的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

但收到错误curl: (6) Could not resolve host: command

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

1 个答案:

答案 0 :(得分:1)

在bash中使用变量时,这是一个常见错误-设置变量时,它们不会以$为前缀,但是在引用它们时,必须以$为前缀为了扩大。因此,根据您的情况,您可能希望使用:curl $command而不是curl command