【问题标题】:Sending Output of Terminal Command via curl using a Slack Webhook使用 Slack Webhook 通过 curl 发送终端命令的输出
【发布时间】:2020-07-14 21:11:39
【问题描述】:

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

我遇到的问题是,由于设备是便携式的,它连接的网络和后续 IP 会不断变化,但我需要知道它才能通过 SSH 连接到设备。

我正在尝试编写一个(我认为很简单)bash 脚本,该脚本将在启动时通过 webhook 将时间戳和单元的 IP 发送到 Slack 通道,该 webhook 实际上是以下命令(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[*]}" 确实会显示与工作命令匹配的输出。任何建议将不胜感激。

【问题讨论】:

    标签: arrays bash curl slack-api


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多