【问题标题】:Run automatically a python script with inputs after a raspberry reboot覆盆子重启后自动运行带有输入的python脚本
【发布时间】:2022-02-03 02:39:28
【问题描述】:

我有一个 python 脚本,我需要在我的树莓派中连续运行。该脚本读取输入,然后生成 JSON 并发出 http 请愿书。代码是这样的:

    import json
    import requests
    from datetime import datetime

    url = 'an ip'

    def main():

        while True:
            tagRFID = str(input("Tag: "))

            date_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

            data = { 'tagRfid'    : tagRFID,
                     'datetime'   : date_time}

            try:
                solicitud = requests.post(url, json = data, timeout = 2)
                obj = json.loads(solicitud.text)

            except requests.exceptions.RequestException:
                pass

    main()

由于不同的原因,电网经常断电,这会导致 raspberry 重新启动。我已经使用 crontab 以这种方式在重启后执行脚本:

@reboot sleep 60 && python3 /home/pi/pathToScript/script.py

这并不能解决我的问题,我认为 input() 行在重新启动时不起作用。 谢谢你们的回答。

【问题讨论】:

  • 子流程调用是否可以提供所需的输入?或者这是否过于动态,需要人工用户输入?
  • 流程需要与用户交互,是用户输入。

标签: python cron raspberry-pi


【解决方案1】:

您可以简单地完成在您的 raspberry 上启动时运行脚本的常规过程。对吧?

  1. 在 /home/pi/ 中创建一个 myscriptBoot.service

  2. 用这个填充 myscriptboot ...(在 ExecStart 中使用正确的 python bin 位置)
    `[单位]

    描述=我的服务
    After=network.target

    [服务]

    ExecStart=/usr/bin/python3 -u /home/pi/pathToScript/script.py WorkingDirectory=/home/pi/pathToScript/
    继承=标准输出
    标准错误=继承
    重启=总是
    用户=pi

    [安装]
    WantedBy=multi-user.target`

  3. 复制并设置权限
    $cp /home/pi/myscriptBoot.service /etc/systemd/system/
    $sudo chmod 664 /etc/systemd/system/myscriptBoot.service

  4. 启用服务
    $sudo systemctl enable myscriptBoot.service

  5. 启动服务
    $sudo systemctl start myscriptBoot.service

  6. 重启

NB 对于 myscriptBoot.service 中的每个更改,您需要...
$sudo systemctl daemon-reload

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 2022-07-31
    • 1970-01-01
    相关资源
    最近更新 更多