Category Archives: shell

「shell」5日前より古いファイルを削除するメモ

#cat filedel.sh
#!/bin/sh
location=”/var/www/data”
find $location -mtime +5 -type f |xargs rm -f

#crontab -l
20 5 1 * * /bin/sh /root/shell/filedel.sh

「shell」ifconfigでネットワークトラフィックを監視するサンプルコード

サンプルコード:
#!/bin/bash
# Link: www.sample.com
###
while :
do
Time=`date +%F” “%T.%N`
rx_before=`ifconfig eth0 |sed -n 8p |awk ‘{print $2}’| cut -c7-`
tx_before=`ifconfig eth0 |sed -n 8p |awk ‘{print $6}’| cut -c7-`
sleep 2
rx_after=`ifconfig eth0 |sed -n 8p |awk ‘{print $2}’| cut -c7-`
tx_after=`ifconfig eth0 |sed -n 8p |awk ‘{print $6}’| cut -c7-`

rx_result=$[(rx_after – rx_before)/512]
tx_result=$[(tx_after – tx_before)/512]
echo -e “$Time nNow_In_Speed: ‘$rx_result’Kbps Now_OUt_Speed: ‘$tx_result’Kbpsn”
done

「shell」LinuxでMySQLのバックアップをするサンプルコード

サンプルコード
#!/bin/sh
# mysql data backup script
#
# use mysqldump –help,get more detail.
#
BakDir=/root/back/ysqlbackup
LogFile=/root/back/mysql/mysqlbak.log
DATE=`date +%Y%m%d%H%M%S`
echo ” ” >> $LogFile
echo ” ” >> $LogFile
echo “——————————————-” >> $LogFile
echo $(date +”%y-%m-%d %H:%M:%S”) >> $LogFile
echo “————————–” >> $LogFile
cd $BakDir
DumpFile=$DATE.sql
GZDumpFile=$DATE.sql.tar.gz
/usr/local/bin/mysqldump -u user -pname  –database -h 127.0.0.1 sampledb> $DumpFile
echo “Dump Done” >> $LogFile
tar czvf $GZDumpFile $DumpFile >> $LogFile 2>&1
echo “[$GZDumpFile]Backup Success!” >> $LogFile
rm -f $DumpFile
#cd $BakDir/daily
cd $BakDir
echo “Backup Done!”
echo “please Check $BakDir Directory!”
echo “copy it to your local disk or ftp to somewhere !!!”
find $BakDir -ctime +30 -exec rm {} ;
echo “delete file over 30 days”

「shell 」Tomcatを自動起動するスクリプトコード

サンプルコード
#!/bin/bash
if [ ! -f /tmp/down_count ];then
echo “0” > /tmp/down_count
fi
curl -I tomcat-host -o “/tmp/status” >/dev/null 2>&1
code=`awk ‘NR==1 {print $2}’ /tmp/status`
if [ “$[code]” -ge 500 ];then
down=`expr $(cat /tmp/down_count) + 1`
echo “$down” > /tmp/down_count
if [ “$down” -gt 3 ];then
if [ ! -f “/tmp/restart_count” ];then
echo “0” > /tmp/restart_count
fi
restart_count=`expr $(cat /tmp/restart_count) + 1`
echo “$restart_count” > /tmp/restart_count
if [ “$restart_count” -le 2 ];then
echo “tomcat down at `date`” >> /tmp/down_info
/etc/init.d/tomcat6 restart
fi
fi
else
echo “0” > /tmp/down_count
echo “0” > /tmp/restart_count
fi

「shell」正規表現を使ってIPアドレスかどうかをチェックするコード

サンプルコード:
# vi check_ip.sh
#!/usr/bin/sh
CheckIPAddr()
{
echo $1|grep “^[0-9]\{1,3\}\.\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}$” > /dev/null;
if [ $? -ne 0 ]
then
return 1
fi
ipaddr=$1
a=`echo $ipaddr|awk -F . ‘{print $1}’`
b=`echo $ipaddr|awk -F . ‘{print $2}’`
c=`echo $ipaddr|awk -F . ‘{print $3}’`
d=`echo $ipaddr|awk -F . ‘{print $4}’`
for num in $a $b $c $d
do
if [ $num -gt 255 ] || [ $num -lt 0 ]
then
return 1
fi
done
return 0
}
if [ $# -ne 1 ];then
echo “Usage: $0 ipaddress.”
exit
else
CheckIPAddr $1
fi

Linuxにshellでファイルが存在するかどうかを確認する方法

サンプルコード:
MACCESS=`date -d yesterday +%Y%m%d`
FILE=”access_$MACCESS.log.tgz”
cd /data/nginx/logs
if [ -f “$FILE” ];then
echo “OK”
else
echo “error $FILE” > error.log
mail -s “$FILE backup fail” ctmkdf@arkgame.com <error.log
fi

shellで複数のユーザを追加する方法

shellコード:
#!/bin/bash
#useradd andpassword
echo “please input username:”
read name
echo “please input number:”
read num
n=1
while [ $n -le $num ]
do
useradd $name$n
n=`expr $n + 1 `
done
#/etc/shasow info
echo “please input passwd”
read passwd
m=1
while [ $m -le $num ]
do
echo $passwd |passwd –stdin $name$m >/dev/null
m=`expr $m + 1 `
done

Shellでcsvファイルを読み込んでMySQLに更新する

shellコード:
#!/bin/bash
FILE=’20161204cft.csv’
MYSQL=’/usr/local/mysql/bin/mysql’
USER=’root’
PASSWD=’changfa989′
DB=’JIKEDB’

while read i
do
eval $(echo $i|awk -F’,’ ‘{ printf(“a=%s\nb=%d\nc=%d\nd=%d\ne=%d\nf=%s”,$1,$2,$3,$4,$5,$6); }’)
SQL=”update it_reportb set activeuser=$b,ctnpush=$c,wangmengnu=$d,wangmenguser=$e where name=’$a’ and date=’$f'”
$MYSQL -u$USER -p$PASSWD $DB -e “$SQL”
done < $FILE

shellでランダム乱数作成($RANDOM)方法

方法1
numbers=(122 134 132 154 160 189)

while true
do
index=$(($RANDOM % ${#numbers[*]}))
echo numbers[$index]=${numbers[$index]}
sleep 1
done

方法2
while true
do
RANDOM=$((10#$(date +%N)))
echo random=$RANDOM
sleep 1
done

方法3
random ()
{
local l_min=$1
local l_max=$2
local l_div=$3
local l_range=$(($l_max – $l_min + 1))

RANDOM=`date +%N`
local number=$((($RANDOM % $l_range + $l_min + $l_div – 1) / $l_div * $l_div))

echo $number
}

update_count ()
{
case $1 in
3) ((numbers[3]++)) ;;
6) ((numbers[6]++)) ;;
9) ((numbers[9]++)) ;;
12) ((numbers[12]++)) ;;
15) ((numbers[15]++)) ;;
18) ((numbers[18]++)) ;;
21) ((numbers[21]++)) ;;
24) ((numbers[24]++)) ;;
27) ((numbers[27]++)) ;;
30) ((numbers[30]++)) ;;
esac
}

count=0
readonly max_count=600
readonly g_min=1
readonly g_max=30
readonly g_div=3

while [ $count -lt $max_count ]
do
update_count `random $g_min $g_max $g_div`

((count++))
done

echo numbers[3]=${numbers[3]}
echo numbers[6]=${numbers[6]}
echo numbers[9]=${numbers[9]}
echo numbers[12]=${numbers[12]}
echo numbers[15]=${numbers[15]}
echo numbers[18]=${numbers[18]}
echo numbers[21]=${numbers[21]}
echo numbers[24]=${numbers[24]}
echo numbers[27]=${numbers[27]}
echo numbers[30]=${numbers[30]}

Shell(シェルスクリプト)でMySQLの作成、テーブルの作成、挿入、削除操作方法

参考コード:
#!/bin/bash

HOSTNAME=”XXX.XXX.XXX.157″
PORT=”3306″
USERNAME=”root”
PASSWORD=”888888″
DBNAME=”cftdbinfo”
TABLENAME=”cfttblname”

createdbSQL=”create database IF NOT EXISTS ${DBNAME}”
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -e “${createdbSQL}”
#テーブルの作成
createTblSQL=”create table IF NOT EXISTS ${TABLENAME} ( name varchar(20), id int(11) default 0 )”
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e “${createTblSQL}”

#データの挿入
insertSQL=”insert into ${TABLENAME} values(‘shimara’,2)”
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e “${insertSQL}”

#データのクエリ
selectSQL=”select * from ${TABLENAME}”
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e “${selectSQL}”

#データを更新
update_sql=”update ${TABLENAME} set id=3″
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e “${update_sql}”
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e “${selectSQL}”

#データの削除
deleteSQL=”delete from ${TABLENAME}”
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e “${deleteSQL}”
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e “${selectSQL}”

1 / 512345