ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2022-01-01 14:35:15  阅读:244  来源: 互联网

标签:10.1 shell grep putty awk linux print 033 pts


  平时车机调试时,需要用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

标签:10.1,shell,grep,putty,awk,linux,print,033,pts
来源: https://www.cnblogs.com/linjingyg/p/15755362.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有