我编写了一个简单的 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.img
Angstrom 的图像。