linux shell練習問題訓練
11252 ワード
shell練習問題訓練 2 2個の数の和 を求めます計算1-100の和 ディレクトリの下にあるすべてのファイルの拡張子をbak に変更します.現在のディレクトリの下のすべてをコンパイルする.cファイル: 印刷root実行可能ファイル数、処理結果:root's bins:2306 現在のsshdのポートとプロセスidを印刷し、処理結果:sshd Port&&pid:22 5412 ネイティブが20000個のディレクトリを作成するのにかかった時間を出力し、処理結果:
印刷自機の交換パーティションサイズ、処理結果:Swap:1024 M テキスト分析、/etc/passwordからshellが出現した回数を取り出す
ファイル整理、employeeファイルにワークナンバーと名前が記録されています(ヒントjoin)
shellスクリプトを書いて、現在の日付、時間、ユーザー名、および現在の作業ディレクトリを取得します. shellスクリプトを記述して、ネイティブのネットワークアドレスを取得します. shellスクリプトを作成して、現在のディレクトリの下の10 Kより大きいファイルを/tmpディレクトリの下の に転送します.はmyfirstshellという名前を書きます.shのスクリプトで、以下の内容が含まれています.
ファイル移動コピー、m 1がある.txt m2.txt m3.txt m4.txtは、それぞれ対応するディレクトリを作成し、m 1 m 2 m 3 m 4は、対応するディレクトリの下 にファイルを移動する. rootユーザーは今日、 にどのくらいログインしましたか.端末は、デバイスファイル であるか否かを判定するファイル名を入力する.統計IPアクセス:apacheアクセスログを分析し、アクセスページ数の上位100ビットのIP数を特定する必要がある.ログサイズは78 M程度です.以下はapacheのアクセスログセクションです.
はShellプログラムを設計し、/userdataディレクトリの下に50個のディレクトリ、すなわちuser 1~user 50を確立し、各ディレクトリの権限を設定し、他のユーザーの権限は:読み取り;ファイルの所有者の権限は、読み取り、書き込み、実行です.ファイル所有者が存在するグループの権限は、読み取り、実行です. はshellプログラムを設計し、新しいグループをclass 1に追加し、このグループに属する30人のユーザーを追加し、ユーザー名の形式はstdxxであり、xxは01から30までであり、パスワードは対応するstdxxに設定される. shellプログラムを作成し、30アカウントを自動的に削除する機能を実現します.アカウント名はstd 01からstd 30です. ユーザーはクリーンアップし、現在ログインしているユーザー以外のすべてのユーザー をクリアする.はshellプログラムを設計し、毎月の初日に/etcディレクトリのすべての内容をバックアップして圧縮し、/root/bakディレクトリに保存し、ファイル名は以下の形式yymmdd_である.etc,yyは年,mmは月,ddは日である.Shellプログラムfilebackは/usr/binディレクトリの下に保存されます. ユーザーログファイルについては、1行に1つのユーザークエリー列が記録されています.長さは1~255バイトで、数千万行です.クエリーが最も多い上位100行を排出してください.ログは自分で作成できます.(ヒント:awk sort uniq head) 独自のubuntu環境インストールスクリプト を作成サーバデーモン管理スクリプトを作成します. TCP接続ステータスの表示
検索要求数20個のIP(攻撃源の検索によく使われる):
tcpdumpで80ポートのアクセスを嗅いで誰が一番高いか見てみましょう
より多くのtimeを検索wait接続
より多くのSYN接続を検索
ポート列プロセスによる
アクセス上位10ビットのipアドレスを取得
アクセス数が最も多いファイルまたはページは、上位20
は、転送最大のいくつかのexeファイルをリストします(ダウンロード局を分析するときによく使われます)
には、200000 byte(約200 kb)以上の出力を持つexeファイルと、対応するファイルの発生回数がリストされます.
ログの最後の列にページファイルの転送時間が記録されている場合、クライアントに最も時間がかかるページがリストされます.
は、最も時間のかかるページ(60秒を超えるページ)と、対応するページの発生回数をリストします.
転送時間が30秒を超えるファイルを一覧表示
統計サイトトラフィック(G)
統計404の接続
統計http status
クモは、どのクモがコンテンツをキャプチャしているかを分析します.
ユーザーmandrivaを作成し、そのID番号は2002で、基本グループはdistro(グループIDは3003)、追加グループはlinuxである.
ユーザーfedoraを作成します.そのフルネームはFedora Communityで、デフォルトshellはtcshです.useradd -c "Fedora Community"-s/bin/tcsh fedora 修正mandrivaのID番号は4004で、基本グループはlinuxで、追加グループはdistroとfedoraです.
fedoraにパスワードを追加し、そのパスワードの最短使用期限を2日、最長50日に設定します.
デバッグコマンド
スクリプトを書く
統計/bin、/usr/bin、/sbinおよび/usr/sbinなどの各ディレクトリのファイル数;
は現在のシステム上のすべてのユーザーのshellを表示し、各shellは1回しか表示されないことを要求している.
/etc/passwdファイルの7行目を取り出す.
は、第3題で取り出した第7行のユーザ名を表示する.
統計/etcディレクトリの下でPまたはpで始まるファイルの数.
スクリプトを書き、forループで表示/etc/initを実現する.d/functions、/etc/rc.d/rc.Sysinitと/etc/fstabはそれぞれ何行ありますか.
スクリプトを書き、前の問題の3つのファイルを/tmpディレクトリにコピーします.forサイクルで実現し、各ファイルの最近の修正時間を2016年12月15日15時43分に変更した.
スクリプトを書き、/etc/passwdの3番目、7番目、11番目のユーザーのユーザー名とID番号を表示します.
/proc/meminfoファイルの大文字と小文字で始まる行を表示します.
デフォルトshellがbash以外のユーザーを取り出します.
デフォルトshellがbashであり、そのID番号が最大のユーザを取り出す.
は/etc/rcを表示する.d/rc.Sysinitファイルには、#の先頭に少なくとも1つの空白文字が続き、その後、少なくとも1つの空白文字以外の行があります.
表示/boot/grub/grub.confの少なくとも1つの空白文字で始まる行.
/etc/passwdファイルの1桁または2桁を見つけます.
ifconfigコマンドの結果の1から255の間の整数を探し出す.
現在のシステム上のrootユーザーのすべての情報を表示します.
ユーザーbashとtestbash、basherを追加し、現在のシステム上のユーザー名とデフォルトshellが同じユーザーを見つけます.
netstat-tanコマンドが実行した結果の「LISTEN」または「ESTABLISHED」で終わる行を探し出す. 現在のシステム上のすべてのユーザーのshellを取り出し、各shellは1回のみ表示され、昇順で表示されることを要求する.
# cut -d: -f7/etc/passwd | sort -u
転載先:https://www.cnblogs.com/alamZ/p/7197645.html
real 0m3.367s
user 0m0.066s
sys 0m1.925s
:
4 /bin/bash
1 /bin/sync
1 /sbin/halt
31 /sbin/nologin
1 /sbin/shutdown
:
/bin/sync 1
/bin/bash 1
/sbin/nologin 30
/sbin/halt 1
/sbin/shutdown 1
employee.txt:
100 Jason Smith
200 John Doe
300 Sanjay Gupta
400 Ashok Sharma
bonus
bonus.txt:
100 $5,000
200 $500
300 $3,000
400 $1,250
, :
400 ashok sharma $1,250
100 jason smith $5,000
200 john doe $500
300 sanjay gupta $3,000
a) , 、 。
b) 。
c) 。
d) 。
e) 。
f) 。
g) 。
h) root 。
i) TERM、PATH HOME 。
j) 。
k) id ID。
m) “Good bye”
202.101.129.218 - - [26/Mar/2006:23:59:55 +0800] "GET /online/stat_inst.php?pid=d065 HTTP/1.1" 302 20-"-" "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rn
netstat -n | awk ‘/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}’
netstat -n | awk ‘/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}’
netstat -n | awk ‘/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"t",arr[k]}’
netstat -n |awk ‘/^tcp/ {print $NF}’|sort|uniq -c|sort -rn
netstat -ant | awk ‘{print $NF}’ | grep -v ‘[a-z]‘ | sort | uniq -c
netstat -anlp|grep 80|grep tcp|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -nr|head -n20
netstat -ant |awk ‘/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}’ |sort -rn|head -n20
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." ‘{print $1"."$2"."$3"."$4}’ | sort | uniq -c | sort -nr |head -20
netstat -n|grep TIME_WAIT|awk ‘{print $5}’|sort|uniq -c|sort -rn|head -n20
netstat -an | grep SYN | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | more
netstat -ntlp | grep 80 | awk ‘{print $7}’ | cut -d/ -f1
cat access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -10
cat access.log|awk ‘{counts[$(11)]+=1}; END {for(url in counts) print counts[url], url}’
cat access.log|awk ‘{print $11}’|sort|uniq -c|sort -nr|head -20
cat access.log |awk ‘($7~/.exe/){print $10 " " $1 " " $4 " " $7}’|sort -nr|head -20
cat access.log |awk ‘($10 > 200000 && $7~/.exe/){print $7}’|sort -n|uniq -c|sort -nr|head -100
cat access.log |awk ‘($7~/.php/){print $NF " " $1 " " $4 " " $7}’|sort -nr|head -100
cat access.log |awk ‘($NF > 60 && $7~/.php/){print $7}’|sort -n|uniq -c|sort -nr|head -100
cat access.log |awk ‘($NF > 30){print $7}’|sort -n|uniq -c|sort -nr|head -20
cat access.log |awk ‘{sum+=$10} END {print sum/1024/1024/1024}’
awk ‘($9 ~/404/)’ access.log | awk ‘{print $9,$7}’ | sort
cat access.log |awk ‘{counts[$(9)]+=1}; END {for(code in counts) print code, counts[code]}'
cat access.log |awk '{print $9}'|sort|uniq -c|sort -rn
/usr/sbin/tcpdump -i eth0 -l -s 0 -w - dst port 80 | strings | grep -i user-agent | grep -i -E 'bot|crawler|slurp|spider'
# groupadd linux
# groupadd -g 3003 distro
# useradd -u 2002 -g distro -G linux mandriva
# usermod -u 4004 -g linux -G distro,fedora mandriva
# passwd fedora
# chage -m 2 -M 50 fedora
strace -p pid
1、 newgroup, id 4000;
2、 mageedu1, id 3001, newgroup;
3、 /tmp/hellodirxyz
4、 /etc/fstab
5、 mageedu1;
6、 ;
#!/bin/bash
# Description:
# Version:
# Datetime:
# Author:
myGroup="newgroup1"
myUser="mageedu2"
myDir="/tmp/hellodirxyz1"
myID=3002
groupadd -g 4001 $myGroup
useradd -u $myID -G $myGroup $myUser
mkdir $myDir
cp /etc/fstab $myDir
chown -R $myUser:$myUser $myDir
chmod -R o= $myDir
unset myGroup myUser myID myDir
# ls /bin | wc -l
# cut -d: -f7 /etc/passwd | sort -u
# head -7 /etc/passwd | tail -1
# head -7 /etc/passwd | tail -1 | cut -d: -f1
# head -7 /etc/passwd | tail -1 | cut -d: -f1 | tr 'a-z' 'A-Z'
# ls -d /etc/[Pp]* | wc -l
for fileName in /etc/init.d/functions /etc/rc.d/rc.sysinit /etc/fstab; do
wc -l $fileName
done
#!/bin/bash
for fileName in /etc/init.d/functions /etc/rc.d/rc.sysinit /etc/fstab; do
lineCount=`wc -l $fileName | cut -d' ' -f1`
echo "$fileName: $lineCount lines."
done
#!/bin/bash
for fileName in /etc/init.d/functions /etc/rc.d/rc.sysinit /etc/fstab; do
echo "$fileName: `wc -l $fileName | cut -d' ' -f1` lines."
done
for fileName in /etc/init.d/functions /etc/rc.d/rc.sysinit /etc/fstab; do
cp $fileName /tmp
baseName=`basename $fileName`
touch -m -t 201109151327 /tmp/$baseName
done
for lineNo in 3 7 11; do
userInfo=`head -n $lineNo /etc/passwd | tail -1 | cut -d: -f1,3`
echo -e "User: `echo $userInfo | cut -d: -f1`
Uid: `echo $userInfo |cut -d: -f2`"
done
# grep "^[sS]" /proc/meminfo
# grep -i "^s" /proc/meminfo
# grep -v "bash$" /etc/passwd | cut -d: -f1
# grep "bash$" /etc/passwd | sort -n -t: -k3 | tail -1 | cut -d: -f1
# grep "^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/rc.d/rc.sysinit
# grep "^[[:space:]]\{1,\}[^[:space:]]\{1,\}" /boot/grub/grub.conf
# grep --color=auto "\" /etc/passwd
# ifconfig | grep -E --color=auto "\"
# grep "^root\>" /etc/passwd
# grep --color=auto "^\([[:alnum:]]\{1,\}\)\>.*\1$" /etc/passwd
# cut -d: -f7/etc/passwd | sort -u
3
awk ' {print $1}' |sort |uniq -c|sort -k1nr|head -n3|
転載先:https://www.cnblogs.com/alamZ/p/7197645.html