编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

linux putty shell脚本之防卫主机讲解

wxchong 2024-06-08 23:01:11 开源技术 36 ℃ 0 评论

平时车机调试时,需要用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" role="presentation">i-ne-l代表假如i的值不等于-1时,那么这个循环一直在执行,

netstat-atp|grep‘10.1.23.37|10.1.23.52’|awk-F‘:’‘{printi-ne-l代表假如i的值不等于-1时,那么这个循环一直在执行,netstat-atp|grep‘10.1.23.37|10.1.23.52’|awk-F‘:’‘{print9}' | awk -F ' ' '{print $1}’

的意思是找到连接是10.1.23.37 或 10.1.23.52 的端口

ptspid=(lsof|grep" role="presentation">(lsof|grep(lsof|grepline | 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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表