check and disable device

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
disk_info_file='../data/disk_info.dat'
net_info_file='../data/net_info.dat'

# 创建
function init_disk(){
	echo -n '' > ${disk_info_file}
# 所有硬盘的列表
	disklist=$(lsblk -p | grep "^/dev/sd" | cut -d ' ' -f 1)

# 过滤出每块硬盘的序列号,并保持在文件里
	for disk in ${disklist}
	do
		#echo ${disk}
		hdparm -i ${disk} | grep "SerialNo=" | cut -d ',' -f 3 |  tr -d '[^( ?)|( ?)$]' | cut -d '=' -f 2 >> ${disk_info_file}
	done

}

function init_net(){
	# 提取网卡型号并保存
	lshw -C network | grep "product:" | cut -d ':' -f 2 | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' > ${net_info_file}
}

function shutdown_disk() {
	echo "shutdown disk..."
	echo 1 > /sys/block/${1}/device/delete
}

function shutdown_net() {
	echo "shutdown net..."
	ifconfig ${1} down
}

function disable_usb() {
	echo "install usb-storage /bin/true" >  /etc/modprobe.d/block_usb.conf
}


function check_disk() {
	disklist=$(lsblk -p | grep "^/dev/sd" | cut -d ' ' -f 1)

# 过滤出每块硬盘的序列号,并保持在文件里
	for disk in ${disklist}
	do
		serialno=$(hdparm -i ${disk} 2>/dev/null | grep "SerialNo=" | cut -d ',' -f 3 |  sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | cut -d '=' -f 2)
		#serialno=123
		if test -n "${serialno}" -a -z "$(grep "${serialno}" ${disk_info_file})"; then
			echo "发现异常硬盘 ${disk} ${serialno}" 
			shutdown_disk ${disk#/dev/}
		fi
	done
}

function check_net() {
	# 网卡型号
	lshw -C network | grep "product:" | cut -d ':' -f 2 | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'  > tmp_1
	# 网络名称
	lshw -C network | grep "logical name:" | cut -d ':' -f 2 | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' > tmp_2


	 
	while IFS=, read -r net_type net_name
	do
	   ## take some action on $line
	# echo  " ======= " $net_type
	# echo  " ======= " $net_name
	 # net_type=$(echo "$line" | cut -d ',' -f 1)
	 # net_name=$(echo "$line" | cut -d ',' -f 2)
	  if test -n "${net_type}" -a -z "$(grep "${net_type}" ${net_info_file})"; then
			echo "发现异常网卡 ${net_type} , ${net_name}" 
			shutdown_net ${net_name}
	  fi 
	done < <(paste -d ',' tmp_1 tmp_2)

}

function init(){
	init_disk
	init_net
	#disable_usb
}

function check() {
	check_disk
	check_net
}

function usage() {
	echo "Usage: ${0} {init | check}"
}



# echo $#

# 参数数量小于3
if test $# -lt 1; then
	usage ${0}
	exit 1
fi

case ${1} in
  "init")
	init
	;;
  "check")
	check
	;;
  *)
    usage ${0}
	exit 1
	;;
esac
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值