连接到网络后启动脚本

时间:2017-07-24 19:24:07

标签: linux ubuntu

我有一个用于聊天的机器人,我们使用它存储在每天晚上重新启动的工作站上。现在它重新启动并运行机器人的脚本,同时启动时无需任何人登录。通常它会在那时连接到网络,但如果连接到网络需要更长时间,脚本将退出错误。

我已经尝试将它添加到rc.local文件中,我也尝试将自定义脚本放在init.d目录中并运行 update-rc.d script.sh defaults

一旦计算机连接到网络而没有任何人需要登录,我将编辑哪些文件来运行我的脚本?

我试过环顾四周,看到很多关于登录后工作的例子,我也看到this answer看起来可能是正确的轨道?

- 更新 -

我一直在阅读/etc/network/if-up.d/并查看脚本是否放在那里并标记为可执行文件而没有.sh扩展名,它应该运行。 Debian文档herehere解释:

The ifupdown system automatically runs scripts installed in-
"/etc/network/*/" while exporting environment variables to scripts.

The ifupdown-extra package provides easy network connection tests for use 
with the ifupdown package.

  -The network-test(1) command can be used from the shell.

  -The automatic scripts are run for each ifup command execution.

The network-test command frees you from the execution of cumbersome low 
level commands to analyze the network problem.

The automatic scripts are installed in "/etc/network/*/" and perform the following:

  -Check the network cable connection

  -Check duplicate use of IP address

  -Setup system's static routes based on the "/etc/network/routes" definition

  -Check if network gateway is reachable

  -Record results in the "/var/log/syslog" file

此过程是否在启动时发生?如果脚本放在这里,只有在建立连接而没有人需要登录的情况下它才能运行吗?如果我的脚本在连接建立之前运行,它将由于主机没有响应而失败,并且需要在有人进来后手动运行。

- 更新 -

当计算机重新启动并连接到网络时,脚本没有被执行,我已经尝试查看原因并阅读此答案here并更改了NetworkManager.conf中的值

[ifupdown]
managed=false

[ifupdown]
managed=true

我错过了什么?我知道脚本没有被调用,因为它应该输出到日志中,但日志永远不会出现。

2 个答案:

答案 0 :(得分:0)

我相信你可以使用system.d来完成那项任务

[Unit]
Description=My Test Service
After=network.target
...

https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

答案 1 :(得分:0)

到目前为止,一切都已正确完成。我看了this回答并跑了

sudo ifup --all -v

它显示我的脚本中有语法错误。在确定之后,它按预期工作。