【问题标题】:gammu-smsd is not executing RunOnReceive scriptgammu-smsd 没有执行 RunOnReceive 脚本
【发布时间】:2021-10-24 23:42:18
【问题描述】:

我正在使用最新的 RaspbianOS 开发 RaspberryPi。安装在 Pi 上的最新版本中的 Gammu-smsd。我可以通过 gammu-smsd 发送和接收短信。 我正在尝试将 ssh`s(使用 sshpass)的文件运行到远程 Ubuntu 机器中,并在远程机器上调用 python 脚本。 我在 Pi 上设置了 gammu 配置文件“/etc/gammu-smsdrc”,如下所示:

# Gammu library configuration, see gammurc(5)
[gammu]
# Please configure this!
port = /dev/ttyS0
connection = at
# Debugging
#logformat = textall

# SMSD configuration, see gammu-smsdrc(5)
[smsd]
service = files
logfile = syslog
# Increase for debugging information
debuglevel = 2
PIN = 3831
RunOnReceive = /home/pi/run.sh

# Paths where messages are stored
inboxpath = /var/spool/gammu/inbox/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/

应该在接收时运行的文件,用于测试具有 777 权限,属于用户 pi,组 pi。当通过“./run.sh”从 cli 以用户 'pi' 的身份调用该文件时,该文件运行良好,没有错误。 还运行下面粘贴的“run.sh”文件的内容,作为用户“pi”运行良好,并在远程 Ubuntu 机器上正常启动 python 脚本,没有任何错误。 'run.sh' 的内容是:

#!/bin/sh
/usr/bin/sshpass -p "MY_PASSWORD" ssh thomas@10.1.1.219 "/usr/bin/python3 /home/thomas/anydir/grkrt/pshvr.py"

我认为这与用户和权限有关,但我的 Unix 技能太有限,无法进一步调查,我花了 2 天时间调查。收到短信时,正在从 gammu 调用脚本“run.sh”,因此我假设调用脚本“run.sh”的用户是 gammu。当我通过在标准“pi”用户的上下文中运行“./run.sh”调用脚本时,脚本运行良好。

在 gammu syslogs 中,我可以看到在收到 SMS 但命令未在远程服务器上执行时调用了脚本(至少我没有收到任何错误)。 我认为作为不同用户进入远程机器的 sshpass'ing 会覆盖正在执行脚本的用户权限。不知道我是否在这里说清楚了。

用户 gammu 在 RaspberryPi 上调用脚本“run.sh”,我在其中以用户“thomas”的身份 sshpass'ing 进入远程 Ubuntu 机器并执行 python 脚本,我认为作为用户的 sshpass'ing给我正在登录的用户在远程机器上的权限?但是有些东西不工作或者我遗漏了一些东西......

任何提示都会受到广泛赞赏...

【问题讨论】:

  • ssh 是否在默认路径中?
  • 是的……这里没有任何变化

标签: linux bash rights sshpass gammu


【解决方案1】:

通过使用 curl 命令的解决方法解决了这个问题。 我正在通过 gammu-smsdrc 配置文件中的 RunOnReceive 指令调用 curl 命令 - 到目前为止,该命令没有问题并且用户权限没有问题。 curl 命令在我的 ubuntu iobroker 安装中设置了一个值,该值最终通过 blockly 触发 javascript 并在另一台 ubuntu 机器上运行 python 脚本而没有任何缺陷。不是最直接的,但到目前为止工作稳定。

【讨论】:

  • 用您的确切解决方案给出答案以帮助其他用户会很有帮助!
  • 通过使用 curl 命令的解决方法解决了这个问题。我正在通过 gammu-smsdrc 配置文件中的 RunOnReceive 指令调用 curl 命令 - 到目前为止,该命令没有问题并且用户权限没有问题。 curl 命令在我的 ubuntu iobroker 安装中设置了一个值,该值最终通过 blockly 触发 javascript 并在另一台 ubuntu 机器上运行 python 脚本而没有任何缺陷。不是最直接的,但到目前为止工作稳定。
猜你喜欢
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-21
  • 1970-01-01
  • 1970-01-01
  • 2011-10-02
  • 2013-08-28
相关资源
最近更新 更多