自动挂载 U 盘
现在 Kernel 中一般都有 udev mdev. 在 U 盘接入后会自动升成节点 /dev/sd*[0,9] , 不过在 udev 配置文件中并没有挂载到目录, 仅生成了设备节点. 这时可以自已写个脚本来实现
#!/bin/sh
if [! -f "/dev/sda1"]; then
mount /dev/sda1 /udisk -t vfat
fi
#按理说修改 udev 的配置文件才是最好的选择. 在这里只挂载了指定设备, 并只支持 fat32
自用的开机检测脚本
#!/bin/sh
liveFile=liveRtspServer
decoderFile=decoder
filepath=/root/
updatapath=/udisk/
configFile=/root/config.json
# 判断文件是否存在
checkFile(){if [ -e $1]; then
echo "$1 ready"
return 0
else
echo "$1 not ready"
return 1
fi
}
# 判断两个文件是否相同
diffFile(){
diff $1 $2 > /dev/null
if [$? == 0]; then
echo "Both file are same"
return 1
else
echo "Both file are different"
return 0
fi
}
# 检测升级文件
audoUpdata(){
# 检测 U 盘里的升级文件
updataFile="${updatapath}${liveFile}"
checkFile $updataFile
fileReady1=$?
if [1 == $fileReady1]; then
updataFile="${updatapath}${decoderFile}"
checkFile $updataFile
fileReady1=$?
if [! 0 == $fileReady1]; then
# echo "not find updata file exit.."
return 0
else
localFile="${filepath}${decoderFile}"
fi
else
localFile="${filepath}${liveFile}"
fi
diffFile $updataFile $localFile
if [0 == $?]; then
echo "upgrade file..."
rm "${filepath}${decoderFile}"
rm "${filepath}${liveFile}"
cp $updataFile $filepath
fi
}
#读取 json 变量值 $1 文件名 $2 变量名
getJsonval(){str=$(grep \"$2\" $1) #找到变量所在的行 "xx": "ss:x,s",
str=${str#*:} #裁减掉第一个冒号前所有内容 "ss:x,s",
str=${str#*\"} #裁减掉第一个双引号前所有内容 ss:x,s",
str=${str%,} #如果最后一个逗号,则删除 ss:x,s"str=${str%\"*} #裁减最后一个双引号后所有内容 ss:x,s
echo $str
}
# 检查 IP 合法
checkip(){
IP=$1
VALID_CHECK=$(echo $IP|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print"yes"}')
if echo $IP|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/null; then
if [${VALID_CHECK:-no} == "yes" ]; then
return 0
else
return 1
fi
else
return 1
fi
}
################# 加载海思驱动 MPP 文件 ################
export LD_LIBRARY_PATH="/usr/local/lib:/usr/lib:/root/lib"
echo ======================= LOAD HISICON MPP ======================
cd /root/ko/
./load3520dv300 -i
cd /root/
################# 挂载 U 盘并检查升级文件 ################
echo ======================= CHECK U DISK ======================
if [-e "/dev/sda1"]; then
mount /dev/sda1 /udisk -t vfat
audoUpdata
fi
################# 检查 IP MAC 等配置 ###################
echo ======================= CHECK IP CONFIG ======================
dhcp=$(getJsonval $configFile ipmode)
if ["true" == $dhcp];then
echo config eth0 to dhcp mode!!
udhcpc -i eth0
else
ip=$(getJsonval $configFile ip)
mac=$(getJsonval $configFile mac)
gateway=$(getJsonval $configFile gateway)
checkip $ip
if [1 == $?];then
echo IP address error! reset to 192.168.10.168
ip="192.168.10.168"
fi
checkip $gateway
if [1 == $?];then
echo gateway address error! reset to 192.168.10.1
gateway="192.168.10.1"
fi
macok=$(echo $mac | grep "[A-Fa-f0-9][A-Fa-f0-9]:[A-Fa-f0-9][A-Fa-f0-9]:[A-Fa-f0-9][A-Fa-f0-9]:[A-Fa-f0-9][A-Fa-f0-9]:[A-Fa-f0-9][A-Fa-f0-9]:[A-Fa-f0-9][A-Fa-f0-9]")
if [! $macok]; then
echo mac error! set to default!
mac="52:54:00:69:ac:fd"
fi
echo configure eth0 ...
ifconfig eth0 hw ether ${mac};
ifconfig eth0 $ip netmask 255.255.255.0;
route add default gw $gateway
fi
telnetd &
################# 启动程序 ###################
echo ======================= START APP ======================
checkFile ${filepath}${decoderFile}
if [0 == $?]; then
nohup ${filepath}${decoderFile} >/dev/null &
else
nohup ${filepath}${liveFile} >/dev/null &
fi
echo ======================= DONE ======================
正文完