logo

シェルスクリプト:MySQLでテーブルをリネームしてCSVに出力

BEFOREMONTH=date +%m TODAYMONTH=date +%Y``expr ${BEFOREMONTH} - 1

#echo ${BEFOREMONTH} #echo ${TODAYMONTH}

mysqldump -uユーザー名 -pパスワード データベース名 | gzip > /tmp/データベース名.dump.date +%Y%m%d.gz mysql -uユーザー名 -pパスワード データベース名 << EOF create table テーブル名_${TODAYMONTH} like テーブル名; insert into テーブル名_${TODAYMONTH} select * from テーブル名; delete from テーブル名; SELECT * INTO OUTFILE'/tmp/テーブル名_${TODAYMONTH}.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '' LINES STARTING BY '' TERMINATED BY '\r\n' FROM テーブル名_${TODAYMONTH}; EOF

One minute to read

シェルスクリプト:NTPD再起動してntpdate実行

#!/bin/bash

/etc/init.d/ntpd stop

if [ $? -eq 0 ]; then ntpdate ntp.jst.mfeed.ad.jp else killall ntpd ntpdate ntp.jst.mfeed.ad.jp fi

/etc/init.d/ntpd start

if [ $? -eq 0 ]; then echo date NTPD restart success. else echo date NTPD restart failed. fi

ログローテーション

ログに30日間残す。 30日経過したログファイルは.oldとする。 60日経過した.oldファイルは.old.1とし、次回スクリプト実行時に削除される。

if [ -e /root/bin/ntp-restart.log.old.1 ]; then rm /root/bin/ntp-restart.log.old.1 fi

find /root/bin/ntp-restart.log -mtime +30 | xargs -i {} ntp-restart.log.old find /root/bin/ntp-restart.log.old -mtime +60 | xargs -i {} ntp-restart.log.old.1

One minute to read

シェルスクリプト:Slackへの通知

if [ -n $? ];then echo "Usage: ./slack.sh IPaddress" exit 1; fi

url='webhookのAPIで取得したURLをここに記載する。' username='ユーザー名として名乗る名称を記載する。なんでもOK' to="#チャンネル名を記載する" subject="hostname : $1" emoji=':bell:'   <-絵文字。なんでもOK message="$2"

payload="payload={ &#34;channel&#34;: &#34;${to}&#34;, &#34;username&#34;: &#34;${username}&#34;, &#34;text&#34;: &#34;${subject}&#34;, &#34;icon_emoji&#34;: &#34;${emoji}&#34;, &#34;attachments&#34;: [ { &#34;text&#34;: &#34;${message}&#34; } ] }"

curl -m 5 –data-urlencode "${payload}" $url

One minute to read

シェルスクリプト:tomcatとApacheの再起動

RESPGM=tomcat

echo "$RESPGM restart program Start date +%Y/%m/%d/%H:%M:%S" /etc/init.d/httpd stop

HTDPS=ps -ef |grep httpd|grep -v grep|wc -l

if [ $HTDPS -eq 0 ] ; then /etc/init.d/$RESPGM stop sleep 5 /etc/init.d/$RESPGM start

     TOMPS=`ps -ef |grep $RESPGM|grep -v grep|wc -l` 

     if [ $TOMPS -gt 0 ] ; then
             /etc/init.d/httpd start
             echo &#34;$RESPGM restart program Successful!! `date +%Y/%m/%d/%H:%M:%S`&#34;
     else
             echo &#34;$RESPGM restart program Stop `date +%Y/%m/%d/%H:%M:%S`&#34;
     fi

else echo "A problem occured" echo "$RESPGM restart program Stop date +%Y/%m/%d/%H:%M:%S" fi

One minute to read

シェルスクリプト:zfsスナップショットをリモートサーバーへバックアップ

#########################################################################

[事前準備]

1.バックアップサーバー上でSSHUSRのauthorised_keyに公開鍵を登録する

2.バックアップサーバー上でvisudoを実行して、ユーザーを追加、/sbin/zfsを追加する

3.ローカルとバックアップサーバー上のZFSディレクトリを確認しておく

#########################################################################

export LANG=c

Common vars

#ZFSバックアップサーバー ZFSSVR=192.168.◯.◯

#ZFSバックアップサーバー上のファイルシステム ZFSSVRD=zfs1/$1

#SSH,SUDO実行ユーザー SSHUSR=zfsuser

#ローカルのバックアップ対象のZFSファイルシステム ZFSD01=zfs1/$1

#スナップショット名 SNPNAME=snapshot01

#バックアップの際の送信先ファイルシステム振り分け用 YOUBI01=date +\%a #YOUBI01=Sun

Backup Scripts

ping -c 3 ${ZFSSVR}

バックアップサーバー上のバックアップデータの削除

/usr/bin/ssh -t ${SSHUSR}@${ZFSSVR} "sudo /sbin/zfs destroy ${ZFSSVRD}/${YOUBI01}@${SNPNAME}"

ローカル上でスナップショットの作成

/sbin/zfs snapshot ${ZFSD01}@${SNPNAME}

ローカルのスナップショットをバックアップサーバーへ送信

/sbin/zfs send ${ZFSD01}@${SNPNAME} | /usr/bin/ssh ${SSHUSR}@${ZFSSVR} sudo /sbin/zfs recv -F ${ZFSSVRD}/${YOUBI01}

ローカルのスナップショットの削除

/sbin/zfs destroy ${ZFSD01}@${SNPNAME}

One minute to read

シェルスクリプト:ロードアベレージを毎日メールで配信

Variables

DATE01=date +%d DATE02=date +%Y%m%d MAILADDR=メールアドレスをここに入力する。

Execute commands

/usr/bin/sar -q -f /var/log/sa/sadate +%d > /root/bin/sysstat/sar${DATE01}.txt /usr/bin/unix2dos /root/bin/sysstat/sar${DATE01}.txt /usr/bin/uuencode /root/bin/sysstat/sar${DATE01}.txt sar${DATE02}.txt | /bin/mail -s "LoadAverage Data" ${MAILADDR}

One minute to read

シェルスクリプト:ログ出力

コマンド

echo "[INFO] Script time is ${SECONDS}sec." とにかくシェルスクリプトの結果をログに吐き出す [#q8adb902]

LOG=result.log

{

date echo "Hello World" echo "Good Night" service httpd status

} >> ${LOG} ヒアドキュメントを使って出力をまとめる [#b508eb98]

One minute to read

シェルスクリプト:一定のプロセス数を超えたらサービス再起動

export LANG=c

PROCESS=httpd PROCESS_COUNT=100

LOG=/var/log/psrestart.log DATE=date &#39;+%Y/%m/%d %k:%M:%S&#39;

log file

if [-e $LOG ]; then

echo &#34;$LOG&#34;

else

touch $LOG

fi

process check

AliveProces=ps -ef | grep $PROCESS | grep -v grep | wc -l echo $DATE number of $PROCESS processes ==$AliveProces== >> $LOG

if [ "$AliveProces" -ge $PROCESS_COUNT ] then echo $DATE Start $PROCESS restart >> $LOG service $PROCESS restart echo $DATE End $PROCESS restart >> $LOG else echo "no restart" fi

One minute to read