0

我编写了一个简单的 python 脚本,执行时会获取我的 BeagleBone Black 的 IP 地址并将其发送到我的电子邮件地址,这样我就不必将板子插入我的笔记本电脑,获取 ip,拔掉它,然后远程 SSH 进入。这是脚本

#!/usr/bin/python

"""Find own ip address and email it."""

import socket
import datetime, time
import sys

failed = 1
while(failed):
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(("8.8.8.8",80))
        my_ip = s.getsockname()[0]
        s.close()
        failed = 0
    except SocketError:
        print sys.exc_info()[0]
    except:
        print error
    time.sleep(5)

# Import smtplib for the actual sending function
import smtplib

# Import the email modules we'll need
from email.mime.text import MIMEText


msg = MIMEText("cta_BBB_1 ip address: %s" % my_ip)


me = '<outgoing message email address>'
you = '<incoming message receiver>'

msg['Subject'] = 'cta_BBB_1 ip address at ' + str(datetime.datetime.now())
msg['From'] = me
msg['To'] = you

# Send the message via our own SMTP server, but don't include the
# envelope header.
s = smtplib.SMTP('<server_name>', <server_port))
s.login('<login>', '<password>')
s.sendmail(me, [you], msg.as_string())
s.quit()

如果我只是在 BBB 上运行该脚本,它就可以完美运行。然后我使脚本可执行并编写了一个 cron 作业来触发它,如下所示(忽略第二行,它处理重置 BBB 上的日期/时间):

@reboot /usr/bin/python /home/root/cta_stuff/cta_boot_send_ip.py
30 * * * *    /usr/bin/ntpdate-sync silent

如果我运行,它会出现crontab -l

因此,当我硬重启(通过重置按钮)、通过 ssh 重启或停止板子然后重新打开时,cron 作业不会触发脚本(即没有收到带有 IP 地址的电子邮件)。我已经在 BBB 上检查了我能想到的与此任务有关的所有内容的格式、权限等。如果有人知道它为什么不起作用,我真的很感激一些帮助,因为我完全被难住了。

另外,我目前正在使用BBB-eMMC-flasher-2013.06.06.imgAngstrom 的图像。

4

2 回答 2

0

我遇到了同样的问题,发现只有在您打开终端时它才能在默认安装上工作。无论出于何种原因,Ti 对 Linux 系统进行了一些奇怪的更改,当你的终端关闭时,它会自动杀死任何后台进程。Google beaglebone nohup,因为您必须更改一些设置以防止在退出时杀死您的进程。尝试在启动时启动自定义服务也会遇到问题,并且corn 无法正常工作。欢迎来到 Linux 的狂野西部

于 2013-07-01T21:46:45.293 回答
0

问题解决:我是一个埃新手(以前的linux经验只与ubuntu有关),一般对linux没有太多经验。因此,我一直在不分青红皂白地运行opkg upgrade、关注opkg update,而没有指定要升级的内容,因此可能会在整个构建过程中引入问题。因此,我从 6/20 图像重新开始,刷新了电路板,重新配置了所有内容,并将其添加到 python 脚本中(在while脚本顶部的循环上方):

time.sleep(45) #to avoid timing issues

然后我在cron中添加了这个:

@reboot /home/root/boot_send_ip.py

现在 cron 作业在重新启动时触发,我收到了通过电子邮件发送给我的 IP。耶!

BB google 小组建议使用udhcpc来处理这种类型的服务,我将在未来进行研究,但现在这一切都通过 cron 工作。

于 2013-07-02T23:47:26.210 回答