linux常用shell脚本

发布时间:2024年01月01日

查看系统当前进程连接数

netstat -an | grep ESTABLISHED | wc -l

如何在/usr目录下找出大小超过10MB的文件?

find /usr -type f -size +10240k

添加一条到192.168.3.0/24的路由,网关为192.168.1.254?

route add -net 192.168.3.0/24 netmask 255.255.255.0 gw 192.168.1.254

如何在/var目录下找出90天之内未被访问过的文件?

find /var \! -atime -90

在整个目录树下查找文件“core”,如发现则无需提示直接删除它们

find / -name core -exec rm {} \;

有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何

crontab -e 0 0 * * 7 /bin/cp /user/backup /tmp

每周一下午三点将/tmp/logs目录下面的后缀为*.log的所有文件rsync同步到备份服务器192.168.1.100中同样的目录下面,crontab配置项该如何写

00 15 * * 1 rsync -avzP /tmp/logs/*.log root@192.168.1.100:/tmp/logs

找到/tmp/目录下面的所有名称以"_s1.jpg"结尾的普通文件,如果其修改日期在一天内,则将其打包到/tmp/back.tar.gz文件中

find /tmp -type f -name ".*_sj.jpg" -mtime 1|xarges tar zxf /tmp/back.tar.gz

一台Linux系统初始化环境后需要做一些什么安全工作?

  • 1、添加普通用户登陆,禁止root用户登陆,更改SSH端口号
  • 2、服务器使用密钥登陆,禁止密码登陆
  • 3、开启防火墙,关闭SElinux,根据业务需求设置相应的防火墙规则
  • 4、装fail2ban这种防止SSH暴力破击的软件
  • 5、设置只允许公司办公网出口IP能登陆服务器(看公司实际需要)
  • 6、设置nginx_waf模块防止SQL注入
  • 7、把Web服务使用www用户启动,更改网站目录的所有者和所属组为www
  • 8、修改历史命令记录的条数为10条

用一条命令显示本机eth0网卡的IP地址,不显示其它字符

#方法一:
ifconfig eth0|grep inet|awk -F ':' '{print $2}'|awk '{print $1}'
#方法二
ifconfig eth0|grep "inet addr"|awk -F '[ :]+' '{print $4}' 
#方法三:
ifconfig eth0|awk -F '[ :]+' 'NR==2 {print $4}' 
#方法四:
ifconfig eth0|sed -n '2p'|sed 's#^.*addr:##g'|sed 's# Bc.*$##g'
#方法五:
ifconfig eth0|sed -n '2p'|sed -r 's#^.*addr:(.*)  Bc.*$#\1#g'
#方法六(centos7也适用):
ip addr|grep eth0|grep inet|awk '{print $2}'|awk -F '/' '{print $1}'

用netstat命令配合其他shell命令,按照源IP统计所有到80端口的ESTABLISHED状态链接的个数,输出结果类似(第一列为连接数,第二列为IP):

[root@ ~]# netstat -an|grep ESTABLISHED
tcp        0     52 139.224.199.85:22           101.47.33.86:51763          ESTABLISHED 
tcp        0      0 139.224.199.85:45368        106.11.68.13:80             ESTABLISHED 
[root@ ~]# netstat -an|grep ESTABLISHED|grep ":80"
tcp        0      0 139.224.199.85:45368        106.11.68.13:80             ESTABLISHED
netstat -an|grep ESTABLISHED|grep ":80"|awk 'BEGIN{FS="[[:space:]:]+"}{print $4}'

统计nginx日志中访问最多的10个IP

方法1: awk '{a[$1]++}END{for(i in a)print a[i],i|"sort -k1 -nr|head -n10"}' access.log

方法2: awk '{print $1}' access.log |sort |uniq -c |sort -k1 -nr |head -n10

统计日志中访问大于100次的IP

方法1: awk '{a[$1]++}END{for(i in a){if(a[i]>100)print i,a[i]}}' access.log

方法2: awk '{a[$1]++;if(a[$1]>100){b[$1]++}}END{for(i in b){print i,a[i]}}' access.log

说明:方法1是将结果保存a数组后,输出时判断符合要求的IP。方法2是将结果保存a数组时,并判断符合要求的IP放到b数组,最后打印b数组的IP。

统计当前时间前一分钟的访问数

date=$(date -d '-1 minute' +%d/%b/%Y:%H:%M);awk -vdate=$date '$0~date{c++}END{print c}' access.log

date=$(date -d '-1 minute' +%d/%b/%Y:%H:%M);awk -vdate=$date '$4>="["date":00" && $4<="["date":59"{c++}END{print c}' access.log

grep -c $(date -d '-1 minute' +%d/%b/%Y:%H:%M) access.log

统计访问最多的前10个页面($request)

awk '{a[$7]++}END{for(i in a)print a[i],i|"sort -k1 -nr|head -n10"}' access.log

统计访问状态码为404的IP及出现次数

awk '{if($9~/404/)a[$1" "$9]++}END{for(i in a)print i,a[i]}' access.log

文章来源:https://blog.csdn.net/azh89125/article/details/135325711
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。