ベーススクリプト
40954 ワード
1.九九乗算の九九九九を印刷する
2.ディスク領域を確認し、パーティションの使用率が80%を超えると、アラートを発行
3.チェスの印刷
4.10個の乱数を生成し、比較する
5.後続の6文字列:efbaf 275 cd、4 be 9 c 40 b 8 b、44 b 2395 c 46、f 8 c 8873 ce 0、b 902 c 16 c 8 b、ad 865 d 2 f 63は、乱数変数RANDOMに対してランダムにコマンドを実行する:echo$RANDOM|md 5 sum|cut–c 1-10の結果、これらの文字列に対応するRANDOM値を解読してください
6./testdirディレクトリの下に10個のhtmlファイルを作成し、ファイル名は数字N(1から10まで)にランダムな8文字を加えて、例えば:1 AbCdeFgH.html
7.ユーザーuser 1-user 10を10人追加し、パスワードは8ビットのランダム文字
8.100以内に3で割り切れる全ての整数の和を計算する
9.スクリプトを作成し、正の整数nの値の入力を求め、1+2+...+nの総和を計算する
10.判断/var/ディレクトリ下のすべてのファイルのタイプ
11.0-10の数を生成し、数字を当てる
12.スクリプトを作成し、192.168などのネットワークアドレスを入力してください.0.0,入力されたセグメント内のホストのオンライン状態を判定する
13.3秒ごとにシステムにログインしたユーザーの情報を取得する.ユーザのログインが検出すると、ログイン時間とホストがログ/data/loginに記録される.logでスクリプトを終了
14.パラメータとして2つ以上の数値を使用して、最大値と最小値を表示
15.100以内のすべての正奇数の和を求める
16.ユーザが入力したパラメータが正の整数であるか否かを判断する
17./etc/rc.d/rc3.dディレクトリの下には、Kで始まるファイルとSで始まるファイルがそれぞれ複数ある.各ファイルをそれぞれ読み出し、K先頭の出力をファイル加stop、S先頭の出力をファイル名加start、例えばK 34 filename stop S 66 filename startとする
18.ファイル名をパラメータとして使用し、最大値と最小値を表示する
19.二等辺三角形を印刷する
20.スクリプト/root/bin/yesornoを作成する.shは、yesまたはnoの入力をユーザに提示し、ユーザがyesまたはnoを入力したか、または他の情報を判断する
1 for i in `seq 9` ;do
2 for j in `seq 9` ;do
3 if [ $i -ge $j ];then
4 let sum=${i}*${j}
5 echo -e "${i}x${j}=$sum\t\c"
6 fi
7 done
8 echo
9 done
2.ディスク領域を確認し、パーティションの使用率が80%を超えると、アラートを発行
1 disk=`fdisk -l | egrep -o "^/dev/[[:alpha:]]+[0-9]"`
2 #disk=`lsblk | sed -rn "s/^├─([[:alpha:]]{3}[1-9]).*/\1/p"`
3 max_num=0
4
5 for name in `echo $disk`;do
6 # ,df 。
7 if ! df | egrep -o "^$name.*" &> /dev/null;then
8 continue
9 fi
10 # inodes
11 num=`df | egrep -o "$name.*" | tr -s " " "%" | cut -d "%" -f 5`
12 Inodes_num=`df -i | egrep -o "$name.*" | tr -s " " "%" | cut -d "%" -f 5`
13 # inodes 80 。
14 if [ $num -ge 80 -o $Inodes_num -ge 80 ];then
15 if [ $num -gt $max_num ];then
16 max_num=$num
17 max_name=$name
18 max_Inodes_num=$Inodes_num
19
20 elif [ $num -eq $max_num ];then
21 max_equal_num=$num
22 max_equal_name=$name
23 max_equal_Inodes_num=$Inodes_num
24 fi
25 fi
26 done
27 # 80
28 if [ $max_num -ne 0 ];then
29 let remaining=100-$max_num
30 let Inodes_remaining=100-$max_Inodes_num
31
32 #
33 if [ -z $max_equal_num ];then
34 wall The $max_name disk is about to run out, Only the remaining disk is ${remaining}% and Inodes${Inodes_remaining}%
35 else
36 wall The $max_name and $max_equal_name disk is about to run out, Only the remaining disk is ${remaining}% and Inodes${Inodes_remaining}%
37 fi
38 fi
3.チェスの印刷
1 for j in `seq 8`;do
2 if [ $[$j%2] -eq 0 ];then
3 for i in `seq 4`;do
4 echo -e "\e[41m \e[0m\e[43m \e[0m\c"
5 done
6 else
7 for i in `seq 4`;do
8 echo -e "\e[43m \e[0m\e[41m \e[0m\c"
9 done
10 fi
11 echo
12 done
4.10個の乱数を生成し、比較する
1 cat /dev/null > /tmp/suiji.txt
2
3 for i in {1..10};do
4 echo $RANDOM >> /tmp/suiji.txt
5 done
6
7 max=`cat /tmp/suiji.txt | sort -n | tail -n 1`
8 min=`cat /tmp/suiji.txt | sort -n | head -n 1`
9
10 echo all random is `cat /tmp/suiji.txt | xargs`
11 echo max is $max
12 echo min is $min
13
14 rm -rf /tmp/suiji.txt
5.後続の6文字列:efbaf 275 cd、4 be 9 c 40 b 8 b、44 b 2395 c 46、f 8 c 8873 ce 0、b 902 c 16 c 8 b、ad 865 d 2 f 63は、乱数変数RANDOMに対してランダムにコマンドを実行する:echo$RANDOM|md 5 sum|cut–c 1-10の結果、これらの文字列に対応するRANDOM値を解読してください
1 for char in efbaf275cd 4be9c40b8b 44b2395c46 f8c8873ce0 b902c16c8b ad865d2f63;do
2
3 for num in `seq 32767`;do
4 k=`echo ${num} | md5sum | cut -c 1-10`
5 if [ $k == $char ];then
6 echo $num
7 break
8 fi
9 done
10 done
6./testdirディレクトリの下に10個のhtmlファイルを作成し、ファイル名は数字N(1から10まで)にランダムな8文字を加えて、例えば:1 AbCdeFgH.html
for i in `seq 10`;do
# 8
name=`openssl rand -base64 20 | grep -o "[[:alpha:]]" | head -n 8 | xargs | tr -d " "`
# 1~10
while true;do
num=$[$RANDOM%11]
if [ $num -ne 0 ];then
break
fi
done
#
touch /testdir/$num$name.html
done
7.ユーザーuser 1-user 10を10人追加し、パスワードは8ビットのランダム文字
1 for user in `echo test{1..10}`;do
2
3 id $user &> /dev/null && echo "$user exist" && continue
4 useradd $user
5 pass=`openssl rand -base64 12 | cut -c 1-10`
6 echo $pass | passwd --stdin $user &> /dev/null
7 echo -e "user:$user
passwd:$pass"
8
9 done
8.100以内に3で割り切れる全ての整数の和を計算する
1 sum=0
2 for num in `seq 100`;do
3 if [ $[$num%3] -eq 0 ];then
4 let sum+=$num
5 fi
6 done
7 echo "sum=$sum"
9.スクリプトを作成し、正の整数nの値の入力を求め、1+2+...+nの総和を計算する
1 read -p "Please enter 1 to add to? : " n
2 sum=0
3
4 for num in `eval seq $n`;do
5 let sum+=$num
6 done
7
8 echo "sum=$sum"
10.判断/var/ディレクトリ下のすべてのファイルのタイプ
1 read -p "Please enter the directory to be judged: " dir
2
3 if [[ "`echo $dir | sed -rn "s/^.*(.)$/\1/p"`" != "/" ]];then
4 if [[ ! -f $dir ]];then
5 dir=$dir/
6 else
7 echo -e "\e[31mPlease enter the directory\e[0m"
8 exit
9 fi
10 fi
11
12 for file in `ls $dir`;do
13 if [[ -f $dir$file ]];then
14 echo "$file is file"
15 elif [[ -d $dir$file ]];then
16 echo "$file is direction"
17 elif [[ -c $dir$file ]];then
18 echo "$file is character"
19 elif [[ -L $dir$file ]];then
20 echo "$file is link"
21 else
22 echo "Unknown type"
23 fi
24 done
11.0-10の数を生成し、数字を当てる
1 i=$[$RANDOM%11]
2 while true;do
3 read -p "Please enter a lucky number(0-10): " num
4
5 if [ $i -eq $num ];then
6 echo "Congratulations, you guessed it."
7 exit
8 elif [ $num -lt $i ];then
9 echo -e "Sorry, the input is too small.
"
10 else
11 echo -e "Sorry, the input is too big.
"
12 fi
13 done
12.スクリプトを作成し、192.168などのネットワークアドレスを入力してください.0.0,入力されたセグメント内のホストのオンライン状態を判定する
1 read -p "Enter the ip address segment to be detected. Such as 192.168.100.0: " ip
2 net=`echo $ip | sed -nr "s/^(([0-9]{1,3}\.){3}).*/\1/p"`
3
4 if [[ -z $net ]];then
5 echo -e "\e[31mPlease enter a reasonable IP address\e[0m"
6 exit
7 fi
8
9 echo -e "
Start detection at `date` o'clocki" >> /data/host_up.log
10 echo -e "
Start detection at `date` o'clocki" >> /data/host_down.log
11
12 i=1
13 while [ $i -le 10 ];do
14 if ping -c 1 -w 1 $net$i &> /dev/null;then
15 echo $net$i is up >> /data/host_up.log
16 else
17 echo $net$i is down >> /data/host_down.log
18 fi
19 let i++
20 done
13.3秒ごとにシステムにログインしたユーザーの情報を取得する.ユーザのログインが検出すると、ログイン時間とホストがログ/data/loginに記録される.logでスクリプトを終了
1 read -p "Input needs to monitor users: " user
2 while true ; do
3 if who | grep "^$user" > /dev/null ;then
4 echo "$user is logging in at `date '+%F %T'`" >> /data/login.log
5 exit
6 fi
7 sleep 3
8 done
14.パラメータとして2つ以上の数値を使用して、最大値と最小値を表示
1 for((i=1;i<=10;i++));do
2
3 read -p "Enter the number to compare(Enter end input): " num_$i
4 val=`eval echo '$'num_$i`
5
6 if [[ -z $val ]];th
7 break
8 fi
9
10 [ $i -eq 1 ] && max=$val
11 [ $i -eq 2 ] && min=$val
12
13 if [ $max -le $val ];then
14 max=$val
15 fi
16
17 [ $i -ge 2 ] && if [ $min -ge $val ];then min=$val ;fi
18 done
19
20 echo "max=$max;min=$min"
15.100以内のすべての正奇数の和を求める
1 odd_num=0
2 even_num=0
3
4 i=1
5 while [ $i -le 100 ];do
6 if [ $[$i%2] -eq 0 ];then
7 let even_num+=i
8 else
9 let odd_num+=i
10 fi
11 let i++
12 done
13
14 echo odd number is $odd_num
15 echo even is $even_num
16.ユーザが入力したパラメータが正の整数であるか否かを判断する
1 read -p "Please enter a positive integer: " num
2 if [[ "$num" =~ ^[0-9]+$ ]];then
3 if [ $num -gt 0 ];then
4 echo "You are entering a positive integer."
5 else
6 echo "0 is not a positive integer"
7 fi
8 else
9 echo "You are not entering a positive integer"
10 fi
17./etc/rc.d/rc3.dディレクトリの下には、Kで始まるファイルとSで始まるファイルがそれぞれ複数ある.各ファイルをそれぞれ読み出し、K先頭の出力をファイル加stop、S先頭の出力をファイル名加start、例えばK 34 filename stop S 66 filename startとする
1 for file in `ls /etc/rc.d/rc3.d/`;do
2
3 if echo $file | sed -rn "s/^(S.*)$/\1/";then
4 echo "$file start"
5 elif echo $file | sed -rn "s/^(K.*)$/\1/";then
6 echo "$file stop"
7 fi
8
9 done
18.ファイル名をパラメータとして使用し、最大値と最小値を表示する
1 file=1
2 until [[ "$file" == "0" ]];do
3 read -p "Please enter the file to be counted(0 exit script): " file
4
5 if [[ -f $file ]];then
6 echo -e "$file The total number of lines is `wc -l < $file`
"
7 elif [[ "$file" != "0" ]];then
8 echo -e "$file not file
"
9 fi
10
11 done
19.二等辺三角形を印刷する
1 read -p "Please enter the height: " high
2 for row in `seq $high`;do
3 let num_1=$high-$row
4 let num_2=2*$row-1
5
6 for space in `seq $num_1`;do
7 echo -e " \c"
8 done
9
10 for star in `seq $num_2`;do
11 echo -e "*\c"
12 done
13
14 echo
15 done
20.スクリプト/root/bin/yesornoを作成する.shは、yesまたはnoの入力をユーザに提示し、ユーザがyesまたはnoを入力したか、または他の情報を判断する
1 read -p "Please enter yes or no: " input
2
3 if [[ "$input" =~ [yY]([eE][Ss]){,1} ]];then
4 echo "Your choice is yes"
5 elif [[ "$input" =~ [Nn]([oO]]){,1} ]];then22:45:12
6 echo "Your choice is no"
7 else
8 echo "Your choice is neither yes nor no"
9 fi