linux putty shell 有趣脚本之防卫主机

平时车机调试时,需要用putty连接到车机,但是大家连接的默认权限都是root,这涉及到一个问题,如果我不想
让别人用怎么办,同时我也想告诉无论是谁连接到这台主机,当前的主机正在被使用。
因为默认putty连接都是用ssh的,每次连接都会有一个ssh @pts/,从0递增
user 代表终端的0….n

while 中i -ne -l 代表假如i的值不等于-1时,那么这个循环一直在执行,  
netstat -atp | grep ‘10.1.23.37|10.1.23.52’ | awk -F ‘:’ ‘{print
i -ne -l 代表假如i的值不等于-1时,那么这个循环一直在执行,  netstat -atp | grep ‘10.1.23.37|10.1.23.52’ | awk -F ‘:’ ‘{print
9}' | awk -F ' ' '{print $1}’
的意思是找到连接是10.1.23.37 或 10.1.23.52 的端口

ptspid= (lsof|grep ( l s o f | g r e p line | grep sshd | awk -F ’ ’ ‘{print $2}’ | uniq -d)
循环中找到10.1.23.37或10.1.23.52连接到主机的进程pid号

busybox ps | grep pts | grep 30712 | awk -F ‘/’ ‘{print $2}’
根据pid号找到对应的pts 的number
并将number存到arrayptsnum的数组

接下来在获取所有连接到主句的tty number,并与arrayptsnum数组中的number比较,如果不属于arrayptsnum ,那么exist = NO,向 /dev/pts/number 中写入信息,那么对方终端就会获取信息。
找到对方tty的pid号,kill掉,对方就会被强制关闭连接。目的达到了。

#!/bin/bash

user=$(busybox ps | grep ssh | grep -v grep  | awk -F ' ' '{print $5}' | awk -F '/' '{print $2}')

i=0

while [ $i -ne -1 ]
do

user=$(busybox ps | grep ssh | grep -v grep  | awk -F ' ' '{print $5}' | awk -F '/' '{print $2}')

port=$(netstat -atp | grep '10.1.23.37\|10.1.23.52' | awk -F ':' '{print $9}' | awk -F ' ' '{print $1}')

ptsloop=0
for line in $port
do

        ptspid=$(lsof  | grep $line | grep sshd | awk -F ' ' '{print $2}' | uniq -d)
    ptsnum=$(busybox ps | grep pts | grep $ptspid | awk -F '/' '{print $2}')

        arrayptsnum[$ptsloop]=$ptsnum
        ptsloop=$((ptsloop+1))
done

exist="NO"
for line in $user
     do
             for var in ${arrayptsnum[@]};
         do
             if [ $line -eq $var ]
                 then
                     exist="YES"
                     break;
                 else
                     exist="NO"
                 fi
                 done

                 if [ $exist == "NO" ]
                 then
                     echo -e "\033[31m WARNING: \033[0m this is autotest Machine,now the autotest is running.please exit,after 5 seconds you will be killed" > /dev/pts/$line

                         echo -e "\033[31m 5 \033[0m" > /dev/pts/$line
                         sleep 1
                         echo -e "\033[31m 4 \033[0m" > /dev/pts/$line
                         sleep 1
                         echo -e "\033[31m 3 \033[0m" > /dev/pts/$line
                         sleep 1
                         echo -e "\033[31m 2 \033[0m" > /dev/pts/$line
                         sleep 1
                         echo -e "\033[31m 1 \033[0m" > /dev/pts/$line
                         sleep 1

                         pid=$(busybox ps | grep pts/$line | grep -v grep  | awk -F ' ' '{print $1}')
                         kill $pid
         fi
         done

sleep 0.3
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值