第四に、企業の実際のケース
(A)で/ファイル名が10のランダムな小文字の文字列に加えて、固定0ldobyを含有するoldboyディレクトリhtmlファイルを作成するために、ループ10のバッチ。
分析を考えると、乱数メソッドを生成します。
①コアは、10個のランダムな小文字の文字を作成することです。
エコー$ RANDOM範囲は0〜32767です
opensslランド-base64 100
日付+%sの%N
ヘッドは/ dev / urandomの/ cksumの
uuidgen
猫は、/ proc / sys / kernel /ランダム/ UUID
あるmkpasswd(YUMインストール-y期待)
-l:長さ
-d:デジタル
-c:小文字を
-C:大文字
-s:特殊文字
[root@centos6-kvm3 shili]# cat 14-01.sh
#!/bin/bash
path="oldboy"
[ -d /path ] || mkdir -p oldboy/
for n in {1..10}
do
random=`echo "OLDBOY$RANDOM" | md5sum | tr '0-9' 'm-z' | cut -c 2-11`
touch $path/${random}_oldboy.html
done
[root@centos6-kvm3 shili]#
(B)、バッチは、特殊なケースの名前を変更します。質問上記1つのoldboy文字列がすべて大文字にし、拡張HTML(好ましくは、forループで)oldgirlにファイル名の全てをもたらすであろう。
[root@centos6-kvm3 shili]# cat 14-02.sh
#!/bin/bash
for file in `ls oldboy/*.html`
do
mv $file ${file/oldboy.html/oldgirl.HTML}
done
[root@centos6-kvm3 shili]#
方法2
[root@centos6-kvm3 oldboy]# ls | awk -F "oldgirl.HTML" '{print "mv",$0, $1 "oldboy.html"}' | bash
方法3
[root@centos6-kvm3 oldboy]# rename "oldboy.html" "oldgirl.HTML" *.html
(三)は、シェル社が質問3に直面:バッチは特殊なケースを作成するために、ユーザが必要となります。
バルクはoldboy01-oldboy10と(パスワードが要件を混合乱数、数字と文字で)パスワードを設定したアカウントシステム10を作成します。
方法1
[root@centos6-kvm3 shili]# cat 14-03.sh
#!/bin/bash
. /etc/init.d/functions
if [ $UID -ne 0 ]
then
echo "please use root."
exit 1
fi
for n in {41..50}
do
pass=`openssl rand -base64 10`
if [ `grep -w "oldboy$n" /etc/passwd|wc -l` -eq 0 ]
then
useradd oldboy$n &>/dev/null &&\
echo $pass | passwd --stdin oldboy$n &&\
echo -e "oldboy$n\t$pass" >>/tmp/user.txt &&\
action "oldboy$n is successful." /bin/true
else
action "oldboy$n is exist." /bin/false
fi
done
[root@centos6-kvm3 shili]#
方法2
[root@centos6-kvm3 shili]# cat 14-03-01.sh
#!/bin/bash
for n in `seq -w 11 20`
do
pass=`openssl rand -base64 10`
useradd oldboy$n
echo "oldboy$n:$pass" >>/tmp/chpasswd.log
done
chpasswd </tmp/chpasswd.log
[root@centos6-kvm3 shili]#
ネットワークホストメモリ生きているケースをスキャンする(D)。10.0.0.0/24ネットワークのホストの現在の数を決定するためにシェルスクリプトを書きます。オンラインどのような電流がどのようなものです。
ホストの生存を確認する方法。
①ping
-c数
-i間隔
②nmap(YUM)
nmapの-sP 10.0.0.0/24
方法1
[root@centos6-kvm3 shili]# cat 14-04.sh
#!/bin/bash
for n in {1..254}
do
{
if `ping -c 1 -w 3 10.0.0.$n &>/dev/null`
then
echo "10.0.0.$n is up."
else
echo "10.0.0.$n is down."
fi
} &
done
方法2
[root@centos6-kvm3 shili]# nmap -sP 10.0.0.0/24 | awk '/Nmap scan report for/{print $NF}'
(ファイブ)は、MySQLデータベースのバックアップポイント
mysql -uroot -poldboy123 -e "show databases" | grep -v _scheme|sed -1d
分库备份:
mysqldump -B oldboy | gzip > bak.sql.gz
[root@centos6-kvm3 scripts]# vim mysql.sh
#!/bin/bash
path=/back
[ -d $path ] || mkdir $path -p
for dbname in `mysql -uroot -poldboy123 -e "show databases;" 2>/dev/null | grep -v _schema | sed -1d`
do
mysqldump -uroot -poldboy123 -B $dbname | gzip >$path/${dbname}.sql.gz
done
(六)、MySQLのサブライブラリーのサブテーブルのバックアップケーススタディと発展を実現
サブライブラリーMySQLデータベースのバックアップポイントテーブルを達成するためにどのように、スクリプトを実装します。
回答:
テストTEST1 oldboy mysqldumpを| GZIP> bak.sql.gz
1、oldboyライブラリ名
2、テスト\ test1のすべてのテーブル名
方法:
mysqldumpを-B oldboy | GZIP> bak.sql.gz
mysqldumpをoldboy TEST1
mysqldumpを-B oldgril | GZIP> bak.sql.gz
mysqldumpをoldgril TEST1
mysql -uroot -poldboy123 -e "show tables from wordpress;" 2>/dev/null | sed -1d
[root@centos6-kvm3 scripts]# cat mysql.sh
#!/bin/bash
path=/back
[ -d $path ] || mkdir $path -p
for dbname in `mysql -uroot -poldboy123 -e "show databases;" 2>/dev/null | grep -v _schema | sed 1d`
do
for tname in `mysql -uroot -poldboy123 -e "show tables from $dbname;" 2>/dev/null | grep 1d `
do
if [ "$dbname" = "mysql" ]
then
mysqldump -uroot -poldboy123 $dbname $tname | gzip >$path/${dbname}_${tname}.sql.gz
else
mysqldump $dbname $tname | gzip >$path/${dbname}_${tname}.sql.gz
fi
done
done
[root@centos6-kvm3 scripts]#
七、無料のプロのスクリプトファイルを破裂SSH鍵
3台のマシン、M01、バックアップ、nfs01がありますが、他の2台のマシンがパスワードなした後、他の二つのマシンに任意のディレクトリM01バッチから任意のファイルを配布達成するためのスクリプトを書いてください達成するためにM01からSSHキーを使用することは避けてください。
フリータイト環境発電:
[root@centos6-kvm3 scripts]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
12:af:26:77:1e:2d:2b:ce:94:aa:f9:be:c5:a3:c8:90 root@centos6-kvm3
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| . |
| o |
| . S |
| . . + . |
|E . X + . |
| o o X.+ + |
| =+*oo.o |
+-----------------+
[root@centos6-kvm3 scripts]# ll ~/.ssh/
total 8
-rw------- 1 root root 1675 Jan 27 21:48 id_rsa
-rw-r--r-- 1 root root 399 Jan 27 21:48 id_rsa.pub
[root@centos6-kvm3 scripts]# cd ~/.ssh/
[root@centos6-kvm3 .ssh]# ssh-copy-id id_rsa.pub 10.0.0.8
[root@centos6-kvm3 scripts]# cat fenfa.sh
#!/bin/bash
. /etc/init.d/functions
if [ $# -ne 2 ]
then
echo "usage:$0 localdir remotedir"
exit 1
fi
for n in 8 41 43
do
scp -rp $1 10.0.0.$n:$2 &>/dev/null
if [ $? -eq 0 ]
then
action "10.0.0.$n is successful" /bin/true
else
action "10.0.0.$n is failure" /bin/false
fi
done
[root@centos6-kvm3 scripts]#
八、ランダムRANDOMをクラックする例数
以下は、文字列変数は乱数RANDOMをMD5チェックサム、および、文字列の最も重要な部分、使用されるデジタル文字列を処理し、対応する対応するプリブレークRANDOMのMD5チェックサムを抽出することで知られています。
21029299
00205d1c
a3da1677
1f6d12dd
890684b
回答:
[root@centos6-kvm3 .ssh]# cat random.sh
#!/bin/bash
array=(
21029299
00205d1c
a3da1677
1f6d12dd
890684b
)
funmd5(){
for n in {1..32767}
do
echo "$n\t `$n|md5sum`" >>/tmp/md5sum.log
done
}
funjudge(){
for n in ${array[*]}
do
if [ `echo grep $n /tmp/md5sum.log|wc -l` -eq 1 ]
then
echo `grep $n /tmp/md5sum.log`
fi
done
}
main(){
funmd5
funjudge
}
main
[root@centos6-kvm3 .ssh]#
最適化の方法1:
[root@centos6-kvm3 .ssh]# cat random1.sh
#!/bin/bash
array=(
21029299
00205d1c
a3da1677
1f6d12dd
890684b
)
funmd5(){
for n in {1..32767}
do
echo "$n\t `$n|md5sum`" >>/tmp/md5sum1.log
done
}
funjudge(){
char="`echo ${array[*]} | tr " " "|"`"
egrep $char /tmp/md5sum1.log
}
main(){
funmd5
funjudge
}
main
[root@centos6-kvm3 .ssh]#
九、複数のウェブサイトのアドレスを確認するバッチは正常です
企業が質問に直面:一括チェック複数のウェブサイトのアドレスは正常です。
要件:
1は、シェルを達成するための方法の配列を使用して、シミュレートユーザーのアクセスにポリシーを試して確認してください。
すべての10Sは、全ての検出を行うたら2、警報出力はアクセスできません。
図3に示すように、次のアドレスで検出することができます。
http://blog.oldboyedu.com
http://blog.ettiantian.org
http://www.luffycity.com
http://10.0.0.7
回答:
wgetの--spider#シミュレーション爬虫類、htmlファイルをダウンロードしないでください。
方法1
[root@centos6-kvm3 .ssh]# cat url.sh
#!/bin/bash
. /etc/init.d/functions
array=(
http://blog.oldboyedu.com
http://www.baidu.com
http://blog.ettiantian.org
http://www.luffycity.com
http://10.0.0.7
)
checkurl(){
wget -t 2 -T 5 -o /dev/null -q $1
if [ $? -eq 0 ]
then
action "$1 is successfull." /bin/true
else
action "$1 is failure." /bin/false
fi
}
dealurl(){
for n in ${array[*]}
do
checkurl $n
done
}
main(){
while true
do
dealurl
sleep 2
echo "--------"
done
}
main
[root@centos6-kvm3 .ssh]#
方法2
[root@centos6-kvm3 .ssh]# cat url1.sh
#!/bin/bash
. /etc/init.d/functions
array=(
http://blog.oldboyedu.com
http://www.baidu.com
http://blog.ettiantian.org
http://www.luffycity.com
http://10.0.0.7
)
checkurl(){
wget -t 2 -T 5 -o /dev/null -q $1
if [ $? -eq 0 ]
then
action "$1 is successfull." /bin/true
else
action "$1 is failure." /bin/false
fi
}
dealurl(){
for ((i=0;i<${#array[*]};i++))
do
checkurl ${array[$i]}
done
}
main(){
while true
do
dealurl
sleep 2
echo "--------"
done
}
main
[root@centos6-kvm3 .ssh]#
方法3
[root@centos6-kvm3 .ssh]# cat url2.sh
#!/bin/bash
. /etc/init.d/functions
checkurl(){
wget -t 2 -T 5 -o /dev/null -q $1
if [ $? -eq 0 ]
then
action "$1 is successfull." /bin/true
else
action "$1 is failure." /bin/false
fi
}
dealurl(){
while read line
do
checkurl $line
done < ./url.log
}
main(){
while true
do
dealurl
sleep 2
echo "--------"
done
}
main
[root@centos6-kvm3 .ssh]#
テンは、ケース生成されたDoS攻撃を解決するために
攻撃DOS生成されたケースを解決するためのシェルスクリプトを書きます。
対応するコマンドIPファイアウォールのブロックを呼び出すこと(実際の読者に応じて設定してください)、合わせウェブまたはネットワーク接続のログイン時間やPV 100 IP同時接続数の短い期間を監視してください。ファイアウォールコマンド:-I INPUT -s IPアドレス-j DROP iptablesのを
回答:
DOSは、サービスの拒否します
DDOS
分析:
1、シールipコマンド
-I INPUT -s IP地址-j DROP iptablesのは、
2、ウェブログ、またはFiの数
ログファイル、netstatの-an | grepを-i EST発注の重複除外。
図3に示すように、接続の数は、シールを除去した後100 IPよりPV以上に決定されます。
攻撃のIP方法を取ります。
方法1
[root@centos6-kvm3 scripts]# awk '{s[$1]++}END{for(key in s) print s[key],key}' access_2010-12-8.log | uniq |sort -nr
35 59.33.26.105
23 123.122.65.226
8 124.115.4.18
方法2
[root@centos6-kvm3 scripts]# awk '{print $1}' access_2010-12-8.log | uniq -c | sort -nr
35 59.33.26.105
23 123.122.65.226
8 124.115.4.18
[root@centos6-kvm3 scripts]#
[root@centos6-kvm3 scripts]# cat dos.sh
#!/bin/bash
awk '{s[$1]++}END{for(key in s) print s[key],key}' access_2010-12-8.log |sort -nr | head >/tmp/ip.log
while read line
do
ip=`echo $line|awk '{print $2}'`
count=`echo $line|awk '{print $1}'`
if [ $count -gt 30 -a `grep "$ip" /tmp/drop.log|wc -l` -lt 1 ]
then
iptables -I INPUT -s `echo $line|awk '{print $2}'` -j DROP &&\
echo "echo $line|awk '{print $2}'" >>/tmp/drop.log
else
echo "echo $line|awk '{print $2}'" >>/tmp/accept.log
fi
done </tmp/ip.log
[root@centos6-kvm3 scripts]#
[root@centos6-kvm3 scripts]# iptables -nL
ネットワーク接続を得る方法:
[root@centos6-kvm3 scripts]# awk -F "[ :]+" '/ESTAB/{S[$(NF-3)]++}END{for(k in S) print S[k],k}' netstat.log| sort -rn | head
[root@centos6-kvm3 scripts]# awk '/ESTAB/{print $(NF-1)}' netstat.log | awk -F ":" '{print $1}'| uniq -c | sort -rn |head
[root@centos6-kvm3 scripts]# vim dos1.sh
#!/bin/bash
awk -F "[ :]+" '/ESTAB/{S[$(NF-3)]++}END{for(k in S) print S[k],k}' netstat.log| sort -rn | head >/tmp/ip.log
while read line
do
ip=`echo $line|awk '{print $2}'`
count=`echo $line|awk '{print $1}'`
if [ $count -gt 30 -a `grep "$ip" /tmp/drop.log|wc -l` -lt 1 ]
then
iptables -I INPUT -s `echo $line|awk '{print $2}'` -j DROP &&\
echo "echo $line|awk '{print $2}'" >>/tmp/drop.log
else
echo "echo $line|awk '{print $2}'" >>/tmp/accept.log
fi
done </tmp/ip.log
~ [root@centos6-kvm3 scripts]# iptables -nL
XI、サービスの開発は停止スクリプトを起動するMySQLの
要件:if文などで、機能、case文を使用して。
回答:
/etc/init.d/mysqld {開始| ストップ| 再起動}
分析:
1 [スタート]
mysql_safe --user = mysqlの&コマンドラインの成功をテストしてください。
2、ストップ
-ppasswdシャットダウン-urootのmysqladmin
killallは、pkillは
キルpidを推奨
[root@centos6-kvm3 scripts]# cat mysqld.sh
# chkconfig: 2345 20 80
# description: mysql start stop
#!/bin/bash
lockfile=/var/lock/subsys/mysqld
. /etc/init.d/functions
mysqld_pid_file_path="/application/mysql/data/web01.pid"
mysqld_safe=/application/mysql/bin/mysqld_safe
start(){
/bin/sh $mysqld_safe --datadir=/application/mysql/data --pid-file=$mysqld_pid_file_path &>/dev/null &
retval=$?
if [ $retval -eq 0 ]
then
action "mysql start ok" /bin/true
touch $lockfile
return $retval
else
action "mysql start fail" /bin/false
return $retval
fi
}
stop(){
if test -s "$mysqld_pid_file_path"
then
mysqld_pid=`cat $mysqld_pid_file_path`
if (kill -0 $mysql_pid &>/dev/null)
then
kill $mysqld_pid
retval=$?
if [ $retval -eq 0 ]
then
action "mysql stop ok" /bin/true
rm $lockfile
return $retval
else
action "mysql stop fail" /bin/false
return $retval
fi
else
echo "mysqld process is not exits."
return 2
fi
else
echo "$mysqld_pid_file_path is not exist,or mysqld does not startup."
fi
}
case $1 in
start)
start
retval=$?
;;
stop)
stop
retval=$?
;;
restart)
stop
sleep 2
start
retval=$?
;;
*)
echo "usage:$0 {start|stop|restart}"
exit 1
esac
exit $retval
[root@centos6-kvm3 scripts]#
リオーダーケース12個、言葉や手紙
シェルスクリプトで処理した後
周波数ワードが出現によって降順に1、。
図2に示すように、アルファベット順に出現頻度。
the squid project provides a number of resources to assist users design,implement and support squid installations. Please browse the documentation and support sections for more infomation,by oldboy training.
周波数ワードが出現によって降順に1、。
方法1:
[root@centos6-kvm3 scripts]# tr " ," "\n" <12.log | sort|uniq -c| sort -rn
方法2:
[root@centos6-kvm3 scripts]# tr " ," "\n" <12.log | awk '{S[$1]++}END{for(k in S) print S[k],k}'| sort -nr
方法3
[root@centos6-kvm3 scripts]# xargs -n1 <12.log | sort|uniq -c|sort -nr
図2に示すように、降順に文字の発生頻度。
方法1
[root@centos6-kvm3 scripts]# grep -o "[^ ]" 12.log | sort|uniq -c|sort -nr
方法2
[root@centos6-kvm3 scripts]# grep -o "[^ ]" 12.log | awk '{S[$1]++}END{for(k in S) print S[k],k}'|sort -rn
方法3
[root@centos6-kvm3 scripts]# sed 's#[ ,\.]##g' 12.log | awk -F "" '{for(i=1;i<NF;i++)s[$i]++}END{for(k in s) print s[k],k}'| sort -nr
サーティーン、単語の並べ替えケースによる再高度な方法へ
林立プロセス:
[root@centos6-kvm3 scripts]# awk -F '[ ,.]+' '{for(i=1;i<NF;i++)s[$i]++}END{for(k in s) print s[k],k}' 12.log | sort -nr