Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1782351
  • 博文数量: 297
  • 博客积分: 285
  • 博客等级: 二等列兵
  • 技术积分: 3006
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-06 22:04
个人简介

Linuxer, ex IBMer. GNU https://hmchzb19.github.io/

文章分类

全部博文(297)

文章存档

2020年(11)

2019年(15)

2018年(43)

2017年(79)

2016年(79)

2015年(58)

2014年(1)

2013年(8)

2012年(3)

分类: LINUX

2016-08-02 11:20:22

1.
写了个脚本,来备份目录下所有的 shell脚本文件。

点击(此处)折叠或打开

  1. #! /bin/bash

  2. mkdir -p scripts
  3. for i in $(find ./ -name "*".sh);do
  4.     cp $i scripts
  5. done
后来才想到也许find 一条命令就可以实现。

点击(此处)折叠或打开

  1. mkdir -p scripts; 
  2. find . -name "*".sh -exec cp {} scripts \;
这时候会报很多文件相同的错,想了一下明白了,scripts 也在当前目录下,我这个命令既然是find 当前目录,那么scripts 也会被扫描,也会用cp 来拷贝scripts到scripts ,所以会出现这样的报错。
当然可以掩耳盗铃一下。

点击(此处)折叠或打开

  1. #就当我看不见
  2. find . -name "*".sh -exec cp {} scripts \; 2> /dev/null 
  3. #但是用prune 不是更好吗?我记得在某本书上看过说-prune 只能和-print 连用,但是我今天决定试一下。
  4. find . \( -path scripts \) -prune -o -name "*".sh -exec cp {} scripts \;
  5. #-path scripts 居然不行,scripts 要写成./scripts, 但是我已经证明了 -prune 可以和exec连用。
  6. #所以可以写成这样
  7. find . -path ./scripts -prune -o -name "*".sh -execp cp {} scripts \;
  8. #也可以
  9. find . \( -path ./scripts \) -prune -o -name "*".sh -exec cp {} scripts \;
  10. #如果多个目录要排除
  11. find . \( -path ./scripts -o -path ./path \) -prune -o -name "*".sh -exec cp {} scripts \;
  12. #所以在整个文件系统中找SUID 的文件,下面两种办法都可以.
  13. find / \( -path /proc -o -path /run \) -prune -o -perm -4000 -exec ls -ld {} \;    
  14. find / \( -path /proc -o -path /run \) -prune -o -perm -4000 -print

2. traceroute 默认是用UDP通信,以目的端口33434 作为target. 
但是今天我实验了一下,我在一台机器HOSTA用nc 来监听了33434的UDP 端口

点击(此处)折叠或打开

  1. nc -l -u 33434
在另外一台机器HOSTB,我使用traceroute 来print path. 

点击(此处)折叠或打开

  1. traceroute -n -d HOSTA
很奇怪,在HOSTB上仍然很正常的打印出了有2个HOP。 
百思不得其解。

3.  写了个脚本可以获取其他linux的内存,用到了expect.

点击(此处)折叠或打开

  1. auto_smart_ssh () {
  2.     expect -d -c "set timeout -1;
  3.                 spawn ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $2 ${@:3};
  4.                 expect {
  5.                     *assword:* {send -- $1\r;
  6.                                  expect {
  7.                                     *denied* {exit 2;}
  8.                                     eof
  9.                                  }
  10.                     }
  11.                     eof {exit 1;}
  12.                 }
  13.                 "
  14.     return $?
  15. }

  16. IP_HEADER="10.32.134."
  17. ip_range=(32 34 35 36 37 38 46 47 48 49)
  18. ssh_opts="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"


  19. for i in ${ip_range[@]};do
  20.     mem=`auto_smart_ssh d1rector $IP_HEADER$i -C "free -m" |awk '/Mem:/{print $2}'`
  21.     echo "$IP_HEADER$i has ${mem}M memory"
  22. done

4. ping 多个host的串行脚本

点击(此处)折叠或打开

  1. shopt -s -o nounset
  2. IP_HEADER="10.12."
  3. ip_range=("33.88" "30.233" "31.173" "33.27" "30.241" "32.32" "33.123")
  4. length=${#ip_range[@]}
  5. for (( i=0;i<$length;i++ ));do
  6.     ping -c 1 $IP_HEADER${ip_range[$i]} 2>&1 > /dev/null
  7. #for i in ${ip_range[@]};do
  8. # ping -c 1 $IP_HEADER$i 2>&1 > /dev/null
  9.     if [[ $? -ne 0 ]];then
  10.         echo $IP_HEADER${ip_range[$i]} is not respond to ping
  11.         #echo $IP_HEADER$i is not respond to ping
  12.     fi
  13. done


阅读(806) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~