Linux shell script

来源:互联网 发布:怎么查看电脑的端口 编辑:程序博客网 时间:2024/06/05 13:29

这里主要记载工作中用到的一些小脚本:(ps 我每次都会把最新写的放到第一位)

*、输入一个日期,可以知道此日期的上周四是几号

#!/bin/bashDATA=$1date -d $DATA +%w | awk '{print $0+3}' |xargs -i  date -d "$DATA {} days ago"  +%Y%m%d# 首先 $1 是个位置变量,+%w 可以得出此日期是星期几,我们可以找到规律:周四到周日是距 3 天,这个不会变,我们把周四到周末加上星期几正好是 $1 到上周四的天数,然后指定 $1 的前 { 此为 $0+3 } 天,然后按格式 +%Y%m%d 就可以得出结果。[root@localhost tmp]# ./a.sh 2014092020140911       # 可以看到 9 月 20 号的上周四是 9 月 11 号

*、使文件中的两个字段相乘

[root@gameserver ~]# head -20 /var/tmp/1.csv   # 需要处理的文件 实际有 9181 行::ffff:1.0.32.0,115,1809858,23.1167,113.25::ffff:1.0.8.0,117,1809858,23.1167,113.25::ffff:1.0.2.0,119,1814991,35,105::ffff:1.0.1.0,120,1814991,35,105::ffff:1.1.32.0,115,1809858,23.1167,113.25::ffff:1.1.16.0,116,1809858,23.1167,113.25::ffff:1.1.8.0,117,1809858,23.1167,113.25::ffff:1.1.4.0,118,1810821,26.0614,119.3061::ffff:1.1.2.0,119,1814991,35,105::ffff:1.1.0.0,120,1814991,35,105::ffff:1.3.0.0,112,1809858,23.1167,113.25::ffff:1.2.64.0,114,1809858,23.1167,113.25::ffff:1.2.32.0,115,1809858,23.1167,113.25::ffff:1.2.16.0,116,1809858,23.1167,113.25::ffff:1.2.0.0,119,1814991,35,105::ffff:1.2.2.0,120,1814991,35,105::ffff:1.2.6.0,119,1810821,26.0614,119.3061::ffff:1.2.4.0,120,1814991,35,105::ffff:1.2.5.0,120,1810821,26.0614,119.3061::ffff:1.2.12.0,118,1809858,23.1167,113.25[root@gameserver tmp]# cat a.sh           # 脚本内容#!/bin/bashkey=`cat 1.csv | wc -l`a=(`awk -F , '{print $3}' 1.csv`)b=(`awk -F , '{print $4}' 1.csv`)for ((i=0;i<$key;i++))  {     sum=$(echo ${a[$i]} \* ${a[$i]} \+ ${b[$i]} \* ${b[$i]} | bc)     echo $sum >> a.txt}[root@gameserver tmp]# ./a.sh                # 执行脚本[root@gameserver tmp]# cat 1.csv | wc -l     # 原数据行9181[root@gameserver tmp]# cat a.txt | wc -l     # 对应的值也有这么多行9181

*、批量用新文件中的数据替换旧文件中的数据

[root@localhost tmp]# cat a.txt     # 要被替换的文件a b c 192.168.1.1 da c b 192.168.1.2 ea f v 192.168.1.3 f[root@localhost tmp]# cat b.txt     # 用来替换的数据172.16.1.1172.16.1.2172.16.1.3[root@localhost tmp]# ./c.sh[root@localhost tmp]# cat a.txt     # 替换结果a b c 172.16.1.1 da c b 172.16.1.2 ea f v 172.16.1.3 f[root@localhost tmp]# cat c.sh      # 脚本内容#!/bin/basholdip=(`awk '{print $4}' ./a.txt`)newip=(`cat b.txt`)for ((i=0;i<3;i++))  {    sed -i "s/${oldip[$i]}/${newip[$i]}/" ./a.txt}

*、变量赋值 (将26个小写字母赋值给一个变量)

[root@localhost tmp]# echo a={a..z} | echo $aa b c d e f g h i j k l m n o p q r s t u v w x y z

*、使用 expect 让 shell 可以自动完成登录多台服务器并执行相应的命令

#!/bin/bash#######################################                                    ##          RedHat 小怪兽              ##                                    ##                   2014-06-12       ##                                    #######################################list=("192.168.1.81 root 123456 df1" "192.168.1.82 root 123456 df2")length=${#list[@]} ## 获取变量的个数,一个双引号为一个变量值#echo $lengthfor ((i=0;i<$length;i++))   {    host=`echo ${list[$i]} | awk '{print $1}'`    user=`echo ${list[$i]} | awk '{print $2}'`    pass=`echo ${list[$i]} | awk '{print $3}'`    desc=`echo ${list[$i]} | awk '{print $4}'`  ## 将每个变量值中的位数分别赋值给新的变量名#    echo $a $b $c    expect << EOF    spawn ssh $user@$host;    expect {    "(yes/no)?" { send "yes\r"; exp_continue }  ## 第一次登陆会提示 yes or no    "password:" { send "$pass\r" }}    expect "#"    send "hostname > $desc.txt\rdf -h >> $desc.txt\rexit\r"  ## 多个命令可以直接连着写,记得加 \r    expect eof  ## 等待进程结束EOF#    sleep 5}for ((i=0;i<$length;i++))   {    host=`echo ${list[$i]} | awk '{print $1}'`    user=`echo ${list[$i]} | awk '{print $2}'`    pass=`echo ${list[$i]} | awk '{print $3}'`    desc=`echo ${list[$i]} | awk '{print $4}'`    expect << EOF    spawn scp $user@$host:/root/$desc.txt .    expect "password:"    send "$pass\r"    expect eofEOF}cat df*.txt > disk_sum.txt && rm -rf df*.txt  ## 将下载到的不同服务器的文件放到一起,方便查看
*、已知一些网卡名称,分别判断机器中的网卡名称是什么,并查看其连接状态

#/bin/bashpath=/etc/sysconfig/network-scripts/div=`ls $path | awk '{print $1}' | grep ifcfg | awk -F - '{print $2}'`for i in $divdofor k in eth0 p5p1 em1 p7p1 enp2s0doif [ $k == $i ]thenmii-tool -v $i | grep status | echo -e '\e[32m'$i'\e[m'`awk '{print $0}'`fidonedone[root@localhost tmp]# ./a.sheth0 basic status: autonegotiation complete, link ok        ##  最终效果

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 ofo突然要交押金余款怎么办 裙子的腰小了怎么办 白衬衣棉质变软怎么办? 车被自行车刮了怎么办 刮花别人的车门怎么办 破腹产九个月意外怀孕怎么办 破腹产一年半意外怀孕怎么办 37天流产了该怎么办 旧鞋穿着磨脚了怎么办 皮鞋磨脚怎么办小窍门 拉链从下面开了怎么办 高帮足球鞋松了怎么办 橡筋裤头太紧了怎么办 内增高鞋跟太高怎么办 电脑增高架高了怎么办 银行取钱走后回来说少了怎么办 运动t桖太大了怎么办 袖口松紧太紧了怎么办 衣服穿着就皱了怎么办 麻料的衣服很皱怎么办 麻料衣服皱了怎么办 棉麻裤子皱了怎么办 裙子屁股坐皱了怎么办 真丝衣服洗皱了怎么办 粘纤的衣服皱了怎么办 硅胶手机壳粘灰怎么办 橡筋裤子买大了怎么办 橡筋裤子腰小了怎么办 地垫粘瓷砖上怎么办 汽车围裙锈透了怎么办 万能胶水沾到手上怎么办 圆领体恤领口容易皱怎么办 上衣剪了个洞怎么办 上衣破了个洞怎么办 鸟屎腐蚀车漆怎么办 毛风衣叠久了怎么办 黑色的衣服沾毛怎么办 雪纺裙子弄上油怎么办 内衣买小了怎么办妙招 长裤衬衫裙邹了怎么办 100棉衬衣皱了怎么办?