检测网段IP使用情况的shell脚本 & 自动化ftp脚本
#!/bin/bash #main--- network=192.168.1 ping_count=3 IP=1 :>IP_use :>IP_idle :>ping_action echo "`date "+%Y%m%d %H:%M:%S"`----->脚本开始执行......" while [ $IP -lt 255 ] do host=$network.$IP echo "-------->开始检测$host服务器通迅是否正常,ping次数$ping_count." ping $host -c $ping_count >.ping_tmp sleep 1 cat .ping_tmp >>ping_action echo "-------->服务器$host检测已完成." sum_ping=`tail -2 .ping_tmp |head -1 |awk -F, '{print$2}' |cut -c 2-2` loss_ping=`tail -2 .ping_tmp |head -1 |awk -F, '{print$4}'|cut -c 2-5` if [ $sum_ping -eq $ping_count ];then echo "-->$host IP 已经在使用中" echo "-->$host IP 已经在使用中" >>IP_use else echo "$host IP 目前空闲:$loss_ping" echo "$host IP 目前空闲" >>IP_idle fi IP=$((IP+1)) done echo "`date "+%Y%m%d %H:%M:%S"`----->脚本运行完毕......"
要实现Ping一个网段的所有IP,并检测网络连接状态是否正常,很多方法都可以实现,下面简单介绍两种,如下:
脚本1
#!/bin/sh # Ping网段所有IP # 2012/02/05 ip=1 #通过修改初值 while [ $ip != "254]; do #yes正常,no主机不存在或不正常 ping 192.168.0.$ip -c 2 | grep -q "ttl=" && echo "192.168.0.$ip yes" || echo "192.168.0.$ip no" ip=`expr "$ip" "+" "1"` done
输出结果:
192.168.0.1 yes
192.168.0.2 no
192.168.0.3 no
192.168.0.4 no
192.168.0.5 yes
192.168.0.6 no
192.168.0.7 yes
...
脚本2
#!/bin/sh # Ping网段所有IP # 2012/02/05 ip="192.168.0." for i in `seq 1 254` do ping -c 2 $ip$i | grep -q 'ttl=' && echo "$ip$i yes"|| echo "$ip$i no" #yes正常,no主机不存在或不正常 done
输出结果:
192.168.0.1 yes
192.168.0.2 no
192.168.0.3 no
192.168.0.4 no
192.168.0.5 yes
192.168.0.6 no
192.168.0.7 yes
...
linux和windows下的自动ftp脚本(shell bat)
一、先来看linux下的:
#! /bin/bash cd /ftp/ CURRENTDATE=` date +%Y%m%d ` YESTERDAY=` date -d yesterday +%Y%m%d ` THREEDAYAGO=` date -d '3 days ago' +%Y%m%d ` #echo $TWODAYAGO ftp -n -i 34.97.34.3 << ! user ftpuser ftpuser bin mput $YESTERDAY.* delete $THREEDAYAGO.* bye !
注:此脚本结合linux 下的crontab,定时把前一天的数据文件传到另一服务器上,并删除前3天的数据文件!
二、windows 下的ftp脚本分成2部分:
1、执行文件
2、文本文件
执行文件 后缀为 *.bat:
@echo off cd /D E:\siis\code_tz\ ftp -i -s:"D:\ftpscript\ftp.txt" exit
文本文件:
open 200.120.75.229
ftpuser
ftpuser
cd siis
bin
mput *
close
bye
注:此脚本结合windows下的计划任务用来定时更是更新远端服务器某个目录下的文件。
bash批量修改文件名称的方法小结(增加,去除,修改后缀)
一、加后缀
1.问题:同以目录下有海量以日期命名的文件,其中有的有后缀,有的以点结尾,如20020101.,20020102.,……,20020101.td,20020102.td……
要求: 把所有以点结尾的加上后缀.ts
我的方法:
#!/bin/bash for files in `ls *.` do mv $files `echo "$filests" ` done 2. 同上 mv $files ${files}ts 3. 同上 mv $files `$files.ts|sed 's/\.//' ` 4. file =>file.txt mv $files $files.txt 5. *.04 => *04.txt mv $files $(echo ${files}.txt|sed 's/\.//1') 或 mv $files `echo ${files}.txt|sed 's/\.//1' `
二、改后缀(.old => .new)
1. rename rename .old .new * 2. mv $files ${file%.old}.new 3. mv $files `echo $files|tr .old .new` 4. mv $files `echo $files|sed 's/\.old/\.new/' `
三、去后缀 (*.dat => *)
1. mv $files `echo $files |sed 's/\.dat//' ` 2. mv $files `echo $files|tr .dat (4空格)`
四、改前缀 (re* => un*)
1. mv $files un${$files#re} 2. mv $files `echo $files | tr re un`
使用Linux shell脚本实现FTP定时执行批量下载指定文件
使用FTP定时批量下载指定文件的shell脚本,具体实例介绍如下所示:
1、目标FTP服务器地址
#FTP服务器地址 ip=10.19.15.23
2、FTP账号和密码
u=账号
p=密码
3、使用mget结合正则表达式下载文件
#获取昨天日期,为后面下载使用 T=`date -d yesterday +%Y%m%d`
4、连接FTP服务器,到指定路径下下载文件
ftp -n <<EOF open $ip user $u $p binary cd /hour #远程服务器文件目录 lcd /home/Comparisor/XN_data/hour #本地存放的文件目录 hash prompt off #关闭交互 mget *$T* cd ../day #远程服务器文件目录 mget *$T* close bye EOF
5、将脚本加入定时任务crontab,每天6点执行。
使用crontab -e 编辑:
0 6 * * * /home/XXXX/get_xn_data.sh #后面跟脚本的绝对路径
6 、完整的脚本为:
#!/bin/bash #获取性能系统小时粒度的指标数据 u=账号 p=密码 ip=10.195.15.23 T=`date -d yesterday +%Y%m%d` #获取日期,根据日期抓取xdr文件 #写入日志 echo "(`date`) get data start...." >> /home/XXX/getdata.log echo "===================================================" >> /homeXXX/getdata.log ftp -n <<EOF open $ip user $u $p binary cd /hour #远程服务器文件目录 lcd /home/Comparisor/XN_data/hour #本地存放的文件目录 hash prompt off mget *$T* cd ../day mget *$T* close bye EOF
使用Linux shell脚本实现FTP定时执行批量下载指定文件