我们可以运行shell脚本并检查系统mac地址验证然后处理。
#!/bin/bash
### here i need to check system mac address
### if mac is not match then script will not run
killall gnome-terminal
echo "End Of Day Session Complete"
plz建议
答案 0 :(得分:1)
为什么不呢。首先获取系统的mac address
并将其存储在shell脚本或配置文件中的变量中。每次运行脚本时,首先获取系统的mac address
并与已存储在脚本变量中的mac id进行比较,如果相同则继续,如果不是,则退出。使用ifconfig -a
命令获取系统的mac地址,并将其存储在配置文件或脚本中。
答案 1 :(得分:0)
可以像这样获得硬件地址:
LC_ALL=C ifconfig | egrep "HWaddr" | awk '{print $5}'
但请注意:
要暂停工作,请退出。不要killall,如果你这样做,不要指望某人可以看到以后的回音信息。
答案 2 :(得分:0)
由于您希望在多个系统上运行代码,因此可以使用关联数组来存储要运行脚本的系统的MAC地址
declare -A valid_mac
valid_mac["00:00:00:00:00:00"]=1
valid_mac["00:00:00:00:00:01"]=1
valid_mac["00:00:00:00:00:02"]=1
如果mac地址有效,你的脚本功能是终止运行它的每台机器上的所有gnome-terminal会话。
让我们定义一个函数
function kill_all_terms(){
killall gnome-terminal
echo "End Of Day Session Complete"
}
现在,您需要在每台计算机上获取此计算机的MAC地址列表。有很多方法可以做到这一点。下面的函数使用shell字符串解析功能列出所有IPv4接口的MAC地址
function macs(){
local macs line l1
while read line ; do
l1="${line#*link/ether }" ;
macs="${l1% brd*} ${macs}" ;
done < <( ip -4 -o link ) ;
echo "${macs}"
}
现在我们可以定义主循环
function main() {
for mac in $(macs) ; do
if [ -n "${valid_mac[$mac]}" ] ; then
kill_all_terms
break
fi
done
}
最后只需将main()
作为
main "$@"