linux 網路開啟之後執行指令碼

2021-08-15 09:36:17 字數 1529 閱讀 7772

可以在每次開啟關閉網路的時候執行shell指令碼  scritps.sh

/etc/network/inte***ces 檔案為網路配置檔案

```iface lo inet loopback

auto eth0

iface eth0 inet dhcp

dns-nameservers 223.5.5.5 223.6.6.6

dns-nameservers 116.116.116.116

auto wlan0

allow-hotplug wlan0

iface wlan0 inet static

address 192.168.111.1

dns-nameservers 114.114.114.114 116.116.116.116

pre-up iptables-restore < /etc/iptables

up bash -e /home/pi/set_ip_and_gw.sh

down bash -e /home/pi/test_down.sh

post-down bash -e /home/pi/test_post_down.sh

```* 這裡的 pre-up ,up,down,post-down為網絡卡啟動的鉤子

* pre-up 對應的為 網路啟動之前執行指令碼

* up 對應網路啟動之後執行指令碼

* down 網路關閉之間

* post-down 網路關閉之後

在這4個位置可以新增指令碼程式可以正常執行,但是在/etc/network目錄下面對應的

if-up.d if-down.d if-pre-up.d if-post-down.d 4個目錄中新增指令碼卻無法執行

可以通過systemd來設定開機啟動服務,來對每次開機時再網路開啟之後執行一次指令碼命令

debian 和ubuntu 以及centos7 都預設安裝了systemd 來管理服務

在 /usr/lib/systemd/system 設定需要開機啟動的服務

vim /usr/lib/systemd/system/do_something.service

[unit]

description=test networking

#before=network.target

after=networking.service

# 網路啟動之後

[service]

type=oneshot # 執行一次

execstart=/bin/bash -e /home/pi/set_ip_and_gw.sh

killsignal=sigint

[install]

wantedby=multi-user.target

#多使用者模式

systemctl enable do_something

這樣每次開機都會在網路連線之後執行指定的指令碼

Linux執行指令碼

首先指令碼需要有執行許可權 chmod u x file.sh 執行指令碼有三種方法 1.file.sh 特點 開啟bash子程序來執行,也就是開啟額外的程序來進行,不影響原程序的變數 配置等 2.bash file.sh 特點 和.file.sh相同 3.source file.sh 或者 fil...

linux執行指令碼

linux下開機以某乙個使用者執行指令碼 etc rc.local新增想要被執行的命令即可 預設是以root使用者執行 2 以期望的使用者執行命令 su c ls l myfile.txt guowei 解釋 其中需要被執行的命令是 ls l myfile.txt 期望的使用者的 guowei,表示...

Linux中執行指令碼

bash shell 指令碼的方法有多種,現在作個小結。假設我們編寫好的shell指令碼的檔名為hello.sh,檔案位置在 data shell目錄中並已有執行許可權。方法一 切換到shell指令碼所在的目錄 此時,稱為工作目錄 執行shell指令碼 複製 如下 cd data shell hel...