1 tar命令

 1 从网络上下载到的源码包, 最常见的是 .tar.gz 包, 还有一部分是 .tar.bz2包要解压很简单 :.tar.gz     格式解压为          tar   -zxvf   xx.tar.gz.tar.bz2   格式解压为          tar   -jxvf    xx.tar.bz2出现的问题:2 用tar 解压 tar.bz2文件出错debian:/usr/src# tar jxf linux-2.6.26.tar.bz2tar: bzip2: Cannot exec: No such file or directorytar: Error is not recoverable: exiting nowtar: Child returned status 2tar: Error exit delayed from previous errors解决办法安装bzip2软件包apt-get install bzip23 tar: 从成员名中删除开头的“/”解决:使用大写的P[root@bj ~]# tar czPvf test.tar.gz /root/tomcat/4 tar的增量备份[root@192 ~]# tar -g /root/snapshot -czPvf /root/20161201.tar.gz /root/test.baktar: /root/test.bak:目录是新的/root/test.bak//root/test.bak/1.txt/root/test.bak/2.txt/root/test.bak/4.txt/root/test.bak/add.txt[root@192 ~]# tar -zxvf 20161201.tar.gz tar: 从成员名中删除开头的“/”/root/test.bak//root/test.bak/1.txt/root/test.bak/2.txt/root/test.bak/4.txt/root/test.bak/add.txt

2 wget-c命令

1 wget -c 已经下载就不会再下载了[root@192 sh]# wget -c http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.23.tar.bz2--2016-11-23 18:18:12--  http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.23.tar.bz2正在解析主机 mirrors.cnnic.cn (mirrors.cnnic.cn)... 218.241.113.17, 218.241.113.17正在连接 mirrors.cnnic.cn (mirrors.cnnic.cn)|218.241.113.17|:80... 已连接。已发出 HTTP 请求,正在等待回应... 416 Requested Range Not Satisfiable    文件已下载完成;不会进行任何操作。

3 cat命令和EOF标识输出shell到文件

cat命令和EOF标识输出shell到文件链接:http://www.cnblogs.com/zht-blog/p/4065668.html在某些场合,可能我们需要在脚本中生成一个临时文件,然后把该文件作为最终文件放入目录中。(可参考ntop.spec文件)这样有几个好处,其中之一就是临时文件不是唯一的,可以通过变量赋值,也可根据不同的判断生成不同的最终文件等等。一、cat和EOFcat命令是linux下的一个文本输出命令,通常是用于观看某个文件的内容的;EOF是“end of file”,表示文本结束符。结合这两个标识,即可避免使用多行echo命令的方式,并实现多行输出的结果。二、使用看例子是最快的熟悉方法:# cat << EOF > test.sh> #!/bin/bash> #you Shell script writes here.> EOF结果:引用# cat test.sh#!/bin/bash#you Shell script writes here.可以看到,test.sh的内容就是cat生成的内容。三、其他写法1、追加文件# cat << EOF >> test.sh2、换一种写法# cat > test.sh << EOF3、EOF只是标识,不是固定的# cat << HHH > iii.txt> sdlkfjksl> sdkjflk> asdlfj> HHH这里的“HHH”就代替了“EOF”的功能。结果是相同的。引用# cat iii.txtsdlkfjkslsdkjflkasdlfj4、非脚本中如果不是在脚本中,我们可以用Ctrl-D输出EOF的标识# cat > iii.txtskldjfkljsdkfjklkljkljkljkljlkCtrl-D结果:引用# cat iii.txtskldjfkljsdkfjklkljkljkljkljlk[root@192 sh]# cat <
 ^C[root@192 sh]# cat <
test.sh> #!/bin/sh> #you shell script writes here> EOF[root@192 sh]# more test.sh #!/bin/sh#you shell script writes here

4  echo

1 echo -e 允许后面的输出进行转义echo -e \" 
\"2 得到名字[root@192 sh]# echo /var/log/messages-20161118 |awk -F "/" '{print $NF}'messages-20161118[root@192 sh]# echo /var/log/messages-20161118 |xargs basenamemessages-201611183 sed分割ip[root@192 sh]# echo 192.168.57.131|sed 's/\./\n/g'192168571314 awkawk获取某一列的值   以空格分隔[root@192 sh]# awk '{print $3}' test.txt #IP192.168.1.1192.168.1.2awk--head -1获取第一行[root@192 sh]# cat /etc/passwd|awk '{print $1}'|head -1root:x:0:0:root:/root:/bin/bashawk--tail -1获取第一行[root@192 sh]# cat /etc/passwd|awk '{print $1}'|tail -1chy_:x:1006:1006::/home/chy_:/bin/bashawk---F:  以:分隔[root@192 sh]# cat /etc/passwd|awk -F: '{print $1}'|tail -1chy_awk以www.做分隔[root@192 sh]# echo "http://www.baidu.con"|awk -F"www." '{print $2}'baidu.conawk -baidu.con变成baidu-con[root@192 sh]# echo "http://www.baidu.con"|awk -F"www." '{print $2}'|awk -F. '{print $1"-"$2}'baidu-con awk输出[root@192 sh]# cat test.txt |awk 'NR==1 {print}'192.168.57.132[root@192 sh]# cat test.txt |awk '/132/'192.168.57.132php-config文件中长度大于100的行号[root@test scripts]# cat php-config|awk 'length($0)>80{print NR}'1012202730显示test.txt中的第3行至第5行的第一列与最后一列[root@192 sh]# cat test.txt | awk 'NR==3, NR==5 {print $1,$NF}' 136 137 1235 获取IP[root@192 sh]# ifconfig|grep "broadcast"|awk '{print $2}'|sed 's/addr://g'192.168.57.132

5  du-sch

root@192 sh]# du -sh *4.0K	auto_check_mysql.sh4.0K	lamp.sh4.0K	php.info4.0K	rsa.sh4.0K	test.txt[root@192 sh]# du -shc *4.0K	auto_check_mysql.sh4.0K	lamp.sh4.0K	php.info4.0K	rsa.sh4.0K	test.txt20K	总用量

6 查询linux版本信息

系统版本[root@test ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.5 (Santiago)[root@test ~]# lsb_release -aLSB Version:	:base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarchDistributor ID:	RedHatEnterpriseServerDescription:	Red Hat Enterprise Linux Server release 6.5 (Santiago)Release:	6.5Codename:	Santiago内核版本[root@test ~]# cat /proc/versionLinux version 2.6.32-431.el6.x86_64 (mockbuild@x86-023.build.eng.bos.redhat.com) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Sun Nov 10 22:19:54 EST 2013You have new mail in /var/spool/mail/root[root@test ~]# uname -aLinux test 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux

7 查看机器的cpu和内存

[root@192 sh]# cat /proc/cpuinfo |grep "processor"|wc -l1[root@192 sh]# free -m              total        used        free      shared  buff/cache   availableMem:            977         239         578           6         159         581

8  时间变量

时间变量YEAR=`date +%Y`MONTH=`date +%m`DAY=`date +%d`WEEK=`date +%u`

9 screen后台运行脚本

screen后台执行crtl—+a+d进行保存screen -ls  查看idscreen -r id 进入后台或者nohup mkdir -p/tmp &也是在后台执行不会掉只有&是在当前页面进行

10   2>&1

2>&1将标准出不标准输出错误均打印出来[root@192 ~]# hhhh >/tmp/error 2>&1[root@192 ~]# more /tmp/error -bash: hhhh: 未找到命令

11 csv文件

csv文件扫描文件以,作分隔,csv文件上传到桌面excel直接可以打开

12 secure文件登陆纪录

secure文件登陆纪录,下面这条命令可以查看出哪些ip尝试登陆我们的ipsort  --排序uniq -c ---唯一值并排序sort -nr --从大到小排序[root@192 log]# grep -i "Failed password" /var/log/secure|awk '{print $(NF-3)}'|sort |uniq -c|sort -nr|more2 192.168.57.1$1>=10  将超过10次登陆失败的机器追加到host.deny中或者防火墙中,禁止他们登陆[root@192 log]# grep -i "Failed password" /var/log/secure|awk '{print $(NF-3)}'|sort |uniq -c|sort -nr|awk '$1>=10 {print $2}'执行[root@192 sh]# !shsh -x auto_drop.sh + IP=(`grep -i "Failed password" /var/log/secure|awk '{print $(NF-3)}'|sort |uniq -c|sort -nr|awk '{print $2}'`)++ grep -i 'Failed password' /var/log/secure++ awk '{print $2}'++ awk '{print $(NF-3)}'++ sort++ uniq -c++ sort -nr++ echo 192.168.57.1+ for i in '`echo ${IP[@]}`'+ sed -i '/OUTPUT/a -A INPUT -s 192.168.57.1 -j DROP' /etc/sysconfig/iptables+ service iptables restartRedirecting to /bin/systemctl restart  iptables.service[root@192 sh]# more auto_drop.sh #!/bin/shIP=(`grep -i "Failed password" /var/log/secure|awk '{print $(NF-3)}'|sort |uniq -c|sort -nr|awk '{print $2}'`)#echo ${IP[@]}for i in `echo ${IP[@]}`do	grep $i /etc/sysconfig/iptables >>/dev/null	if [ $? -ne 0 ];then		sed -i "/OUTPUT/a -A INPUT -s $i -j DROP" /etc/sysconfig/iptables	fidoneservice iptables restart加入到定时任务中去,五分钟执行一次[root@192 sh]# crontab -l*/5 * * * * /bin/sh /data/sh/suto_drop.sh >>/tmp/drop.log 2>&1如何实现每秒运行一次这个脚本[root@192 sh]# while sleep 1; do sh /data/sh/auto_drop.sh ;done

13 nmap如果ping禁止,用这个

14

 1) 删除匹配行      sed -i '/匹配字符串/d'  filename  (注:若匹配字符串是变量,则需要“”,而不是‘’。记得好像是)      sed -i '/HISTFILESIZE/d' /etc/bashrc      参考      https://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html 2)  替换匹配行中的某个字符串     sed -i '/匹配字符串/s/替换源字符串/替换目标字符串/g' filename     sed -i 's/yes/old/g' netwrk 3)  匹配前面是#的删除    sed -i '/^[^#]/d' /etc/hosts.allow  4)  root用户环境变量不包括父目录+环境变量不包含权限为777的目录!   echo $PATH | egrep '(^|:)(\.|:|$)'||echo "root用户环境变量不包括父目录!" >>$log_name   echo $PATH | tr ':' ' '` -type d \( -perm -002 -o -perm -020 \) -ls||echo "环境变量不包含权限为777的目录!" >>$log_name 5)#echo ${SOURCE_DIR[@]   @代表SOURCE_DIR中输入的所有数值  6)IP_ADDR=`tail -n 1000 /var/log/secure |grep "Failed password"| egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}" | sort -nr | uniq -c |awk ' $1>=4 {print $2}'`  egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}  筛选IP