使用 Slack Webhook 通过 curl 发送终端命令的输出
Sending Output of Terminal Command via curl using a Slack Webhook
为了上下文,我正在开发一个允许“远程”访问 NVidia Xavier 的系统。不幸的是,在目前的外壳中,除非将整个装置拆开,否则显示端口完全被阻塞。 USB 端口可用,用于连接无线键盘和鼠标。我已经编写了一个可以通过 SSH 执行的 Gstreamer 管道,它将捕获显示并将其流式传输到另一台本地计算机。
我运行遇到的问题是,由于设备是便携式的,它连接的网络和后续 IP 会不断变化,但我需要知道它才能 SSH进入单位。
我正在尝试编写一个(我认为很简单的)bash 脚本,该脚本将在启动时通过 webhook 将时间戳和设备的 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 -I
和 date
的结果。
我尝试使用以下方法创建一个包含所需数据的数组:
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[*]}"
确实会显示与工作命令匹配的输出。任何建议将不胜感激。
这是在 bash 中使用变量时的一个常见错误 - 当您设置它们时,您没有为它们添加前缀 $
,但是当您引用它们时,它们必须带有前缀a $
以便进行扩展。所以在你的情况下,你可能想使用: curl $command
而不是 curl command
为了上下文,我正在开发一个允许“远程”访问 NVidia Xavier 的系统。不幸的是,在目前的外壳中,除非将整个装置拆开,否则显示端口完全被阻塞。 USB 端口可用,用于连接无线键盘和鼠标。我已经编写了一个可以通过 SSH 执行的 Gstreamer 管道,它将捕获显示并将其流式传输到另一台本地计算机。
我运行遇到的问题是,由于设备是便携式的,它连接的网络和后续 IP 会不断变化,但我需要知道它才能 SSH进入单位。
我正在尝试编写一个(我认为很简单的)bash 脚本,该脚本将在启动时通过 webhook 将时间戳和设备的 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 -I
和 date
的结果。
我尝试使用以下方法创建一个包含所需数据的数组:
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[*]}"
确实会显示与工作命令匹配的输出。任何建议将不胜感激。
这是在 bash 中使用变量时的一个常见错误 - 当您设置它们时,您没有为它们添加前缀 $
,但是当您引用它们时,它们必须带有前缀a $
以便进行扩展。所以在你的情况下,你可能想使用: curl $command
而不是 curl command