1.判斷/tmp/run目錄是否存在,如果不存在就建立,如果存在就刪除目錄里所有文件
#!/bin/bash dir=/tmp/run [-f$dir]&&mv$dir$dir.bak [-d$dir]&&rm-rf$dir/*||mkdir$dir
2.輸入一個文件的絕對路徑,判斷路徑是否存在,而且輸出是文件還是目錄,如果是字符連接,還得輸出是有效的連接還是無效的連接
#!/bin/bash read-p"Inputapath:"path if[-L$path-a-e$path];then echo"thisiseffectivelink" elif[-L$path-a!-e$path];then echo"thisisnoteffectivelink" elif[-d$path];then echo"thisisadirector" elif[-f$path];then echo"thisisfile" elif[-e$path];then echo"thisisaothertypefile" else echo"thefileisnotexist" fi
3.交互模式要求輸入一個ip,然后腳本判斷這個IP 對應(yīng)的主機是否 能ping 通,輸出結(jié)果類似于:
Server10.1.1.20isDown!最后要求把結(jié)果郵件到本地管理員root@localhost和mail01@localhost
方法一:
#!/bin/bash read-p"輸入IP地址:"ip ping-c2$ip>/dev/null2>&1 if[$?-eq0];then echo"Server$ipisOK."|mail-s'checkserver'root@localhost else echo"Server$ipisDown!"|mail-s'checkserver'root@localhost fi
方法二:
#!/bin/bash read-p"Inputyourip:"ip ping-c1$ip&>/dev/null [$?-eq0]&&echo"server$ipisok"|mail-s"checkserver"root@localhost||echo"server$ipisdown"|mail-s"checkserver"root@localhost
方法三:
#!/bin/bash tmpfile=`mktemp` mailaddr="root@localhostmail@localhost" read-p"輸入IP地址:"ip ping-c2$ip>/dev/null2>&1 if[$?-eq0];then echo"Server$ipisUp!">>$tmpfile else echo"Server$ipisDown!">>$tmpfile fi cat$tmpfile mail-s"pingserver"$mailaddr$tmpfile rm?-rf?$tmpfile
方法四:
#!/bin/bash rootmail="root@localhost" tmpfile=`mktemp` read-p"Inputaip:"ip ping-c1"$ip"&>/dev/null retval=$? if[$retval-eq0];then echo"Server$ipisup">$tmpfile else echo"Server$ipisdown">$tmpfile fi cat$tmpfile mail-s"pingresult"$rootmail$tmpfile rm?-rf?$tmpfile
4.寫一個腳本,局域網(wǎng)內(nèi),把能ping通的IP和不能ping通的IP分類,并保存到兩個文本文件里(如果例舉整個網(wǎng)段的254個IP花的時間比較長,可以只分類10個ip10.1.1.1~10) 這只是一個局域網(wǎng)內(nèi)機器檢查通訊的一個思路。
#!/bin/bash #清空原來ip文件里的列表 >/tmp/ip_ok >/tmp/ip_down ip=10.1.1 #循環(huán)去ping局域網(wǎng)內(nèi)的主機 for((i=1;i<=10;i++)) do ping?-c1?$ip.$i?&>/dev/null test$?-eq0&&echo"$ip.$i"|tee-a/tmp/ip_ok||echo"$ip.$i"|tee-a/tmp/ip_down done 思考:以上方法可以實現(xiàn),但是速度很慢,希望并行執(zhí)行 #!/bin/bash #清空原來ip文件里的列表 >/tmp/ip_ok >/tmp/ip_down ip=10.1.1 #循環(huán)去ping局域網(wǎng)內(nèi)的主機 for((i=1;i<=10;i++)) do { ping?-c1?$ip.$i?&>/dev/null test$?-eq0&&echo"$ip.$i"|tee-a/tmp/ip_ok||echo"$ip.$i"|tee-a/tmp/ip_down }& done wait echo"ipisok..."
5.寫一個腳本/home/hello.sh,要求當給腳本輸入參數(shù)hello時,腳本返回world,給腳本輸入?yún)?shù)world時,腳本返回hello。而腳本沒有參數(shù)或者參數(shù)錯誤時,屏幕上輸出“usage:/home/hello.sh hello or world”
#!/bin/bash #read-p"Inputastring:"a if[$#-eq0-o$#-gt1];then echo"usage:/home/program/test4.shworld|hello" #echo"usage:`basename$0`world|hello"#更常用的報錯寫法 elif["$1"="hello"];then echo"world" elif["$1"="world"];then echo"hello" else echo"usage:/home/program/test4.shworld|hello" fi
6.自動搭建nfs服務(wù)
#!/bin/bash #關(guān)閉防火墻和selinux serviceiptablesstop chkconfigiptablesoff setenforce0&>/dev/null echo"########防火墻和selinux已經(jīng)關(guān)閉########" #測試網(wǎng)絡(luò),配置內(nèi)網(wǎng)yum源 ping-c1192.168.1.10&>/dev/null if[$?-eq0];then echo"########網(wǎng)絡(luò)ok########" else echo"########請檢查你的網(wǎng)絡(luò)########" exit fi wget-P/etc/yum.repos.d/ftp://192.168.1.10/demo.repo&>/dev/null #安裝相關(guān)軟件 yum-yinstall'nfs*'rpcbind&>/dev/null&&echo"########軟件安裝ok#######" #發(fā)布共享目錄并授權(quán) read-p"Inputyoursharedir:"dir [!-d$dir]&&mkdir$dir-p #授權(quán) chmod1777$dir read-p"Inputyoursharehost(192.168.0.0/24(ro)):"host cat>>/etc/exports</dev/null&&echo"##########rpcbind服務(wù)啟動成功#############" servicenfsrestart&>/dev/null&&echo"############nfs服務(wù)啟動成功#############" chkconfigrpcbindon chkconfignfson #測試驗證 mkdir/u01&>/dev/null mount.nfslocalhost:$dir/u01 [$?-eq0]&&echo"nfs服務(wù)測試ok,可以正常使用!" umount/u01
7.將/etc/passwd里的用戶名分類,分為管理員用戶,系統(tǒng)用戶,普通用戶。
分析: 1.根據(jù)用戶的uid來判斷用戶種類 2.用戶的信息保存在/etc/passwd文件中,需要在該文件中獲取UID 3.根據(jù)用戶的uid去判斷 管理員:root0 系統(tǒng)用戶:1-499ftpapache...65534nfsnobody 普通用戶:500-60000
#!/bin/bash foriin`cat/etc/passwd|cut-d:-f1,3` do uid=`echo$i|cut-d:-f2` name=`echo$i|cut-d:-f1` [$uid-eq0]&&echo$name>>/tmp/adminuser [$uid-gt0-a$uid-lt500-o$uid-eq65534]&&echo$name>>/tmp/systemuser [$uid-ge500-a$uid-ne65534]&&echo$name>>/tmp/normaluser done
8.寫一個倒計時腳本,要求顯示離2018年1月1日(元旦節(jié))的凌晨0點,還有多少天,多少時,多少分,多少秒。
分析: 1.該腳本應(yīng)該是一個死循環(huán),除非當前系統(tǒng)時間等于1月1日的凌晨0點,要退出循環(huán),并且打印元旦快樂break 2.計算未來時間(1月1日的凌晨0點)和當前系統(tǒng)時間的時間差時間單位相同并且以相同的時間為一個基準 需要定義2個變量: 現(xiàn)在時間和未來時間 date命令-d%s 3.計算 假如1月1日和現(xiàn)在時間相差100000s 1天=86400s 1小時=3600s 1分鐘=60 $[100000/86400]=天 $[$[100000%86400]/3600]=小時 $[$[100000%3600]/60]=分鐘
#!/bin/bash goal=`date+%s-d20181001` whiletrue或者untilfalse do now=`date+%s` if[$[$goal-$now]-eq0];then break fi day=$[($goal-$now)/86400] hour=$[($goal-$now)%86400/3600] minute=$[($goal-$now)%3600/60] second=$[($goal-$now)%60] clear echo"離2018年1月1日還有$day天:$hour時:$minute分:$second秒" sleep1 done echo"元旦節(jié)快樂!!!"
9.寫一個腳本把一個目錄內(nèi)的所有空文件都刪除,最后輸出刪除的文件的個數(shù)。
分析: 1.如何判斷文件是空文件-s判斷文件內(nèi)容為非空;判斷空文件則!-seg:[!-sfile] 2.定義一個變量count=0來保存刪除文件的個數(shù),掌握四則運算letcount++ 3.交互式定義變量讓用戶自己決定清理哪個目錄/data/logs/10個文件循環(huán)次數(shù)由目錄里的文件個數(shù)決定find命令
#!/bin/bash read-p"輸入一個你要刪除空文件的目錄:"dir count=0 foriin`find$dir-typef` do [!-s$i]&&rm-rf$i&&letcount++##-s表示非空 done echo"刪除的個數(shù)為:"$count
10.寫一個腳本,將跳板機上yunwei用戶的公鑰推送到局域網(wǎng)內(nèi)可以ping通的所有機器上 10.1.1.1~10.1.1.254
分析: 環(huán)境: jumper-server有yunwei用戶 app1-appn局域網(wǎng)內(nèi)所有可以ping通的機器 1.在跳板上創(chuàng)建yunwei用戶,并且生成一對秘鑰 2.檢測當前局域網(wǎng)中哪些ip是能ping通哪些是不能ping通循環(huán)語句并發(fā)的去檢查 3.在腳本中所有的交互動作需要用到expect實現(xiàn) yunwei用戶sudo授權(quán): visudo ##Allowroottorunanycommandsanywhere rootALL=(ALL)ALL yunweiALL=(root)NOPASSWD:ALL,!/sbin/shutdown,!/sbin/init,!/bin/rm-rf/
#!/bin/bash #檢查局域網(wǎng)中哪些ip是可以ping通,并保存到一個文件 ip1=10.1.1 for((i=1;i<=10;i++)) do ?{ ??????ping?-c1?$ip1.$i?&>/dev/null [$?-eq0]&&echo"$ip1.$i">>ip_up.txt }& done wait #yunwei用戶生成一對秘鑰(有交互) [!-f~/.ssh/id_rsa]&&ssh-keygen-P''-f~/.ssh/id_rsa #將yunwe用戶的公鑰遠程拷貝到指定的服務(wù)器100循環(huán) ##判斷expect程序是否安裝 { rpm-qexpect [$?-ne0]&&sudoyum-yinstallexpect whilereadip2 do /usr/bin/expect<<-EOF ?spawn?ssh-copy-id??root@$ip2 ?expect?{ ??????"yes/no"?{send?"yes ";exp_continue} ??????"password:"?{send?"123 "} ??????} ?expect?eof ?EOF done/dev/null #測試驗證 remote_ip=`tail-1ip_up.txt` sshroot@$remote_iphostname [$?-eq0]&&echo"公鑰推送完畢...."
#!/bin/bash #pushpublickeytoaap-servers #將局域網(wǎng)內(nèi)可以ping通的主機ip保存到一個文件 >ip_up.txt foriin{2..10} do { ip=10.1.1.$i ping-c1$ip&>/dev/null [$?-eq0]&&echo$ip|tee-aip_up.txt }&//并行放到后臺運行 done wait//等待進程結(jié)束 #將yunwei用戶目錄下的公鑰推送到可以ping的服務(wù)器上 #1.判斷yunwei用戶下有沒有公鑰 [!-f~/.ssh/id_rsa.pub]&&ssh-keygen-P""-f~/.ssh/id_rsa #2.將id_rsa.pub公鑰遠程推送到指定服務(wù)器 #2.1判斷expect程序是否安裝,沒安裝則安裝它 { rpm-qexpect [$?-ne0]&&sudoyum-yinstallexpect forremote_ipin`catip_up.txt` do /usr/bin/expect<<-EOF ?spawn?ssh-copy-id?root@$remote_ip ?expect?{ ???????"yes/no"?{?send?"yes ";exp_continue?} ???????"password:"?{?send?"123 "?} ?} ??expect?eof ?EOF done }?&>/dev/null #測試驗證 test_ip=`tail-1ip_up.txt` sshroot@$test_iphostname test$?-eq0&&echo"公鑰推送成功。"
#!/bin/bash [!-f~/.ssh/id_rsa.pub]&&ssh-keygen-P""-f~/.ssh/id_rsa rpm-qexpect [$?-ne0]&&sudoyum-yinstallexpect foriin{130..140} do ip=192.168.44.$i ping-c1$ip [$?-ne0]&&continue echo$ip>>ip_up.txt /usr/bin/expect<<-EOF ????????spawn?ssh-copy-id?root@$ip ????????expect?{ ????????"yes/no"?{?send?"yes ";exp_continue?} ????????"password:"?{?send?"123456 "?} ????????} ????????expect?eof ????????EOF done #測試驗證 test_ip=`tail?-1?ip_up.txt` ssh?root@$test_ip?hostname test?$??-eq?0?&&?echo?"公鑰推送成功。"
11.
任務(wù)/背景:
現(xiàn)有的跳板機雖然實現(xiàn)了統(tǒng)一入口來訪問生產(chǎn)服務(wù)器,yunwei用戶權(quán)限太大可以操作跳板機上的所有目錄文件,存在數(shù)據(jù)被誤刪的安全隱患,所以希望你做一些安全策略來保證跳板機的正常使用。
具體要求:
只允許yunwei用戶通過跳板機遠程連接后臺的應(yīng)用服務(wù)器做一些維護操作
公司運維人員遠程通過yunwei用戶連接跳板機時,跳出以下菜單供選擇:
歡迎使用Jumper-server,請選擇你要操作的主機: 1.DB1-Master 2.DB2-Slave 3.Web1 4.Web2 q.exit
當用戶選擇相應(yīng)主機后,直接免密碼登錄成功
如果用戶不輸入一直提示用戶輸入,直到用戶選擇退出
思路:
需要當yunwei用戶登錄時執(zhí)行一個腳本(該腳本放到哪里?)yunwei用戶的家目錄里的.bashrc
腳本中需要打印一個菜單供用戶選擇(case…esac)
免密碼登錄(上面第10個腳本推公鑰的腳本)
#!/bin/bash #公鑰推送成功 trap''12319 #打印菜單用戶選擇 menu(){ cat<<-EOF 歡迎使用Jumper-server,請選擇你要操作的主機: 1.?DB1-Master 2.?DB2-Slave 3.?Web1 4.?Web2 h.?help q.?exit EOF } #調(diào)用函數(shù)來打印菜單 menu while?true do read?-p?"請輸入你要選擇的主機[h?for?help]:"?host #通過case語句來匹配用戶所輸入的主機 case?$host?in ?1|DB1) ?ssh?root@10.1.1.1 ?;; ?2|DB2) ?ssh?root@10.1.1.2 ?;; ?3|web1) ?ssh?root@10.1.1.250 ?;; ?h|help) ?clear;menu ?;; ?q|quit) ?exit ?;; esac done #!/bin/bash #jumper-server #菜單打印 trap?''?1?2?3? while?true do cat?<<-END 歡迎使用Jumper-server,請選擇你要操作的主機: 1.?DB1-Master 2.?DB2-Slave 3.?Web1 4.?Web2 5.?exit END #讓用戶選擇相應(yīng)的操作 read?-p?"請輸入你要操作的主機:"?host case?$host?in ?1) ?ssh?root@10.1.1.2 ?;; ?2) ?ssh?root@10.1.1.3 ?;; ?3) ?ssh?root@10.1.1.4 ?;; ?5) ?exit ?;; ?*) ?clear ?echo?"輸入錯誤,請重新輸入..." ?;; esac done
12.寫一個腳本,統(tǒng)計web服務(wù)的不同連接狀態(tài)個數(shù)
#!/bin/bash #count_http_80_state #統(tǒng)計每個狀態(tài)的個數(shù) declare-ASTATE states=`ss-ant|grep80|cut-d''-f1` foriin$states do letSTATE[$i]++ done #通過遍歷數(shù)組里的索引和元素打印出來 forjin${!STATE[@]} do echo$j:${STATE[$j]} done
13.寫一個自動搭建apache服務(wù)的腳本,要求如下:
1、用戶輸入web服務(wù)器的IP、域名以及數(shù)據(jù)根目錄 2、如果用戶不輸入則一直提示輸入,直到輸入為止 3、當訪問www.test.cc時可以訪問到數(shù)據(jù)根目錄里的首頁文件“thisistestpage”
#!/bin/bash #定義函數(shù)實現(xiàn)用戶不輸入則一直提示輸入,直到輸入為止 input_fun(){ input_var='' while[-z$input_var] do read-p"$1"input_var done echo$input_var } #調(diào)用函數(shù)并且獲取用戶輸入web服務(wù)器的IP、域名以及數(shù)據(jù)根目錄 IP=`input_fun請輸入你的IP地址:` name=`input_fun請輸入你的域名:` dir=`input_fun請輸入你的數(shù)據(jù)根目錄:` #將ip與主機名輸入到hosts文件里 cat>>/etc/hosts<$dir/index.html #yum安裝apache yum-yinstallhttpd&>/dev/null #發(fā)布虛擬主機 cat>>/etc/httpd/conf/httpd.conf<<-EOF NameVirtualHost?*:80 ServerAdminwebmaster@dummy-host.example.com DocumentRoot$dir ServerName$name ErrorLoglogs/dummy-host.example.com-error_log CustomLoglogs/dummy-host.example.com-access_logcommon EOF #啟動 servicehttpdrestart&>/dev/null echo"====apache啟動成功====" #測試驗證 curlhttp://$name
14.需求:寫一個腳本讓用戶輸入基本信息(姓名,性別,年齡),如不輸入一直提示輸入,最后根據(jù)用戶的信息輸出相對應(yīng)的內(nèi)容
思路:
循環(huán)直到輸入字符串不為空 -z -n
根據(jù)用戶輸入信息做出匹配判斷
#!/bin/bash #該函數(shù)實現(xiàn)用戶如果不輸入內(nèi)容則一直循環(huán)直到用戶輸入為止,并且將用戶輸入的內(nèi)容打印出來 input_fun() { input_var="" output_var=$1 while[-z$input_var] do read-p"$output_var"input_var done echo$input_var } 或者 fun(){ read-p"請輸入您的姓名:"name if[-z$name];then fun else echo"你好,$name!" fi } fun #調(diào)用函數(shù)并且獲取用戶的姓名、性別、年齡分別賦值給name、sex、age變量 name=$(input_fun請輸入你的姓名:) sex=$(input_fun請輸入你的性別:) age=$(input_fun請輸入你的年齡:) #根據(jù)用戶輸入的性別進行匹配判斷 #根據(jù)用戶所輸入的內(nèi)容進行判斷輸入 case$sexin man|男) if[$age-ge18-a$age-le25];then echo"哥們,娶媳婦了嗎" elif[$age-gt25-a$age-le35];then echo"要擔(dān)起家庭的責(zé)任" elif[$age-lt18];then echo"小伙子不錯" else echo"$name先生,你油膩了嗎?" fi ;; woman|女) echo"$name小姐姐你好漂亮" ;; *) echo"你是泰國來的嗎?" ;; esac
15.寫一個初始化系統(tǒng)的腳本
1)自動修改主機名(如:ip是192.168.0.88,則主機名改為server88.itcast.cc) a.更改文件非交互式sed /etc/sysconfig/network b.將本主機的IP截取出來賦值給一個變量ip;再然后將ip變量里以.分割的最后一位賦值給另一個變量ip1 2)自動配置可用的yum源 3)自動關(guān)閉防火墻和selinux
#!/bin/bash ip=`ifconfigeth1|sed-n'2p'|sed's/.*addr:(.*)Bcast.*/1/g'` ip1=`echo$ip|cut-d.-f4` #修改主機名 sed-i"/HOSTNAME=/cHOSTNAME=server$ip1.itcast.cc"/etc/sysconfig/network echo"$ipserver$ip1.itcast.cc">>/etc/hosts #配置yum源 mount/dev/sr0/mnt/&>/dev/null cat>/etc/yum.repos.d/local.repo<<-EOF [local] name=local?yum baseurl=file:///mnt enabled=1 gpgcheck=0 EOF #關(guān)閉防火墻和selinux service?iptables?stop?&>/dev/null setenforce0&>/dev/null #sed-i'/SELINUX=/cSELINUX=disabled'/etc/selinux/config
16.寫一個搭建ftp服務(wù)的腳本,要求如下:
1)不支持本地用戶登錄 2)匿名用戶可以上傳新建刪除 3)匿名用戶限速500KBps
#!/bin/bash #安裝軟件 read-p"請輸入需要安裝的軟件:"s yum-yinstall$s&>/dev/null #備份配置文件 c=/etc/vsftpd/vsftpd.conf cp$c$c.bak #修改配置文件 sed-i'/local_enable/clocal_enable=NO'$c sed-i'$aanon_upload_enable=YES'$c sed-i'$aanon_mkdir_write_enable=YES'$c sed-i'$aanon_other_write_enable=YES'$c sed-i'$aanon_max_rate=512000'$c #啟動服務(wù) servicevsftpdrestart&>/dev/null echo'vsftpd啟動成功' #測試驗證 chmod777/var/ftp/pub touch/var/ftp/pub/1.txt ip=`ifconfigeth1|sed-n'2p'|sed's/.*addr:(.*)Bcast.*/1/g'` cd/tmp lftp$ip<
17.寫一個自動檢測磁盤使用率的腳本,當磁盤使用空間達到90%以上時,需要發(fā)送郵件給相關(guān)人員
#!/bin/bash #Name:check_space.sh #Desc:checkdiskspace /bin/df-h>df.txt use=`catdf.txt|awk'{print$5}'|grep-o'[0-9]+'` foriin$use do [$i-ge90]&&echonoticediskspace:`grep$idf.txt`|mailtom done rm-fdf.txt
18.寫一個腳本監(jiān)控系統(tǒng)內(nèi)存和交換分區(qū)使用情況
#!/bin/bash OIFS=$IFS初始化默認分隔符 IFS=" "定義默認分隔符 file=`free-m|sed-nr'/Mem|Swap/p'|awk'{print$4,$2}'` mem=`echo$file|head-1` swap=`echo$file|tail-1` echo$mem|awk'{if(($1/$2)*100<=50)?print?"物理內(nèi)存空間需要留意,剩余"$1"M";else?print?"物理內(nèi)存在正常范圍"}' ??echo?$swap?|awk?'{if(($1/$2)*100<=50)?print?"交換空間需要留意,剩余"$1"M";else?print?"交換空間在正常范圍"}'#!/bin/bash #監(jiān)控系統(tǒng)內(nèi)存和交換分區(qū)使用情況 #/shell05/free.sh #取當前時間 date>>/tmp/date.txt #取物理內(nèi)存free值 echo"Mem-free:`free-m|grepMem|awk'{print$4}'`M">>/tmp/mem-free.txt #取緩沖區(qū)free值 echo"buffers/cache-free:`free-m|grep-|awk'{print$4}'`M">>/tmp/buffers-free.txt #取Swap區(qū)free值 echo"Swap-free:`free-m|grepSwap|awk'{print$4}'`M">>/tmp/swap-free.txt #將時間與相關(guān)數(shù)據(jù)重新寫入新文件 paste/tmp/date.txt/tmp/mem-free.txt/tmp/buffers-free.txt/tmp/swap-free.txt>/tmp/free.txt #發(fā)送監(jiān)控郵件 mail-s"內(nèi)存監(jiān)控報告"root@localhost/tmp/free.txt
19.輸入一個IP地址,使用腳本判斷其合法性:必須符合ip地址規(guī)范,第1、4位不能以0開頭,不能大于255不能小于0
#!/bin/bash #ValidIP #/shell05/valid.sh read-p"請輸入要檢查的IP:"IP ifecho$IP|grep-E"^([0-9]{1,3}.){3}[0-9]{1,3}$"&>/dev/null;then a1=`echo$IP|cut-d.-f1` a2=`echo$IP|cut-d.-f2` a3=`echo$IP|cut-d.-f3` a4=`echo$IP|cut-d.-f4` if[$a1-gt0-a$a1-le255-a$a2-le255-a$a3-le255-a$a4-gt0-a$a4-le255];then echo"$IPavailable!" else echo"$IPnotavailable!" fi else echo"IPformaterror!" fi
審核編輯:劉清
-
局域網(wǎng)
+關(guān)注
關(guān)注
5文章
739瀏覽量
46223 -
TMP
+關(guān)注
關(guān)注
0文章
15瀏覽量
31833 -
NFS
+關(guān)注
關(guān)注
1文章
52瀏覽量
26074 -
Shell
+關(guān)注
關(guān)注
1文章
363瀏覽量
23257
原文標題:這19個Shell腳本值得收藏!
文章出處:【微信號:網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號:網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論