人人都能學會的企業(yè)SHELL編程_第1頁
人人都能學會的企業(yè)SHELL編程_第2頁
人人都能學會的企業(yè)SHELL編程_第3頁
人人都能學會的企業(yè)SHELL編程_第4頁
人人都能學會的企業(yè)SHELL編程_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、人人都能學會的SHELL編程目 錄1.Shell入門簡介12.Shell編程之變量詳解43.If條件語句學習74.使用if條件語句編寫MySQL備份腳本105.IF條件綜合Shell實戰(zhàn)腳本編寫116.循環(huán)語句for197.循環(huán)語句while218.Until循環(huán)語句229.Case選擇語句2310.select選擇語句2411.Shell編程函數講解2512.Shell數組編程2613.Shell編程之awk、sed命令案例分析2914.全備和增量備份Linux系統(tǒng)腳本編寫3015.Shell編程之IP匹配及磁盤郵件告警331. Shell入門簡介說到Shell編程,我想很多從事Linux運

2、維工作的朋友都不陌生,都對Shell有基本的了解,可能大家剛開始接觸Shell的時候,有各種想法?能不能不學?高大上?到底是浮云?還是神馬?很難???我想告訴大家的是,大家有這些想法一點都不覺得驚訝,為什么?這些都很正常,對于任何一件事情在未開始之前,肯定會有總總假設,那我今天想說的是,學完人人都會Shell編程后,我們會覺得一切的Shell都是浮云,我們每個人都能很好的使用它,駕馭它,更好的完成我們日常運維的工作。曾經有人說過,玩Linux不知道Shell,那就是不懂Linux;現(xiàn)在細細品味確實是這樣。為了讓更多的人能接觸Shell、了解Shell,使用Shell,所以今天開設了這樣一個網絡課

3、程,讓我們的Shell飛起來。好的,其他不多說了,我們正式進入主題,什么是Shell呢?Shell是操作系統(tǒng)的最外層,Shell可以合并編程語言以控制進程和文件,以及啟動和控制其它程序。shell 通過提示您輸入,向操作系統(tǒng)解釋該輸入,然后處理來自操作系統(tǒng)的任何結果輸出來管理您與操作系統(tǒng)之間的交互。簡單來說Shell就是一個用戶跟操作系統(tǒng)之間的一個命令解釋器。Shell是用戶與Linux操作系統(tǒng)之間溝通的橋梁。用戶可以輸入命令執(zhí)行,又可以利用 Shell腳本編程去運行。Linux Shell種類非常多,常見的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne

4、Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh)等。不同的Shell語言的語法有所不同,所以不能交換使用。最常用的shell是Bash,也就是Bourne Again Shell,由于易用和免費,Bash在日常工作中被廣泛使用,也是大多數Linux系統(tǒng)默認的Shell。接下來我們來寫一個簡單的shell腳本。(shell腳本一般文件名以.sh結尾,同時文件第一行定義該腳本為shell腳本)vi first_shell.sh#!/bin/bash#This is

5、my First shellecho “Hello World !”這就是我們的第一個腳本,是不是很簡單呢,注解如下:#!/bin/bash /表示定義該腳本是一個shell腳本(固定格式)。#This is my First shell /這里的#號屬于注解,沒有任何的意義,SHELL不會解析它。echo “Hello World !” /shell腳本主命令,我們執(zhí)行這個腳本講看到: Hello World ! 信息。腳本編寫完畢,如何來執(zhí)行呢,首先執(zhí)行shell腳本需要執(zhí)行權限,賦予執(zhí)行權限:chmod o+x first_shell.sh 然后./first_shell.sh執(zhí)行即可;

6、也可以直接使用命令執(zhí)行: /bin/sh first_shell.sh,顯示效果一樣。2. Shell編程之變量詳解Shell編程語言是非類型的解釋型語言,不像C+/JAVA語言編程時需要事先聲明變量,SHELL給一個變量賦值,實際上就是定義了變量,在Linux支持的所有shell中,都可以用賦值符號(=)為變量賦值。SHELL變量可分為兩類:局部變量和環(huán)境變量。局部變量只在創(chuàng)建它們的shell腳本中使用。而環(huán)境變量則可以在創(chuàng)建它們的shell及其派生出來的任意子進程中使用。有些變量是用戶創(chuàng)建的,其他的則是專用shell變量。例如在腳本里面定義A=123 ,定義這樣一個變量,前面變量名,后面是

7、變量的值。引用變量可以使用$A,把變量放在腳本里面會出現(xiàn)什么樣的效果呢?如下:#!/bin/bash#Author wugk 2014-06-10A=123echo “Printf variables equal is $A”執(zhí)行腳本:sh test.sh,結果將會顯示:Printf variables equal is 123簡單的理解變量,相當于定義一個別名-名稱,引用的時候加上$符號就可以了。例如定義變量 name=wuguangke 執(zhí)行echo $name 將會顯示wuguangke SHELL常見的系統(tǒng)變量解析:$0 當前程序的名稱$n 當前程序的第n個參數,n=1,2,9$* 當

8、前程序的所有參數(不包括程序本身)$# 當前程序的參數個數(不包括程序本身)$? 命令或程序執(zhí)行完后的狀態(tài),一般返回0表示執(zhí)行成功。$UID 當前用戶的ID$PWD 當前所在的目錄我們來測試一個常用變量的腳本:vi auto_var.sh#!/bin/bash#auto print variables#by wugk 2014-09echo -e '03332m-0330m'echo "This is $0 param !"echo "This $1 is $1 param !"echo "This $2 is $2 param

9、 !"echo -e '03332m-0330m'echo "This $* is $* param !"echo "This $# is $# param !"echo "This $? is $? param !"echo緊接著我們來編寫一個簡單的echo打印菜單:#!/bin/bash#auto install httpd #by wugk 2014-09echo -e '03332m-0330m'FILES=httpd-2.2.17.tar.bz2URL=PREFIX=/usr/loc

10、al/apache2/echo -e "03336mPlease Select Install Menu:0330m"echoecho "1)官方下載Httpd文件包."echo "2)解壓apache源碼包."echo "3)編譯安裝Httpd服務器."echo "4)啟動HTTPD服務器."echo -e '03332m-0330m'sleep 203. If條件語句學習在Linux Shell編程中,if、for、while、case等條件流程控制語句用的非常多,把這些學好

11、,對提升腳本的功力有非常大的幫助。下面將逐個來講解具體的用法:Ø If條件判斷語句if (表達式) #if ( Variable in Array )語句1else語句2fi案例一,測試數字大小#!/bin/shNUM=100if ( $NUM > 4 ) ;then echo “this num is $NUM greater 4 !”fi案例二,測試目錄是否存在,不存在則新建(注意,中括號之間必須要空格)#!/bin/sh#judge dir existif ! -d /data/20140515 ;then mkdir -p /data/20140515 elseecho

12、 “This DIR is exist,Please exit .”fi邏輯運算符解析:-f 判斷文件是否存在 eg: if -f filename -d 判斷目錄是否存在 eg: if -d dir -eq等于 應用于:整型比較-ne不等于 應用于:整型比較-lt小于 應用于:整型比較-gt大于 應用于:整型比較-le小于或等于 應用于:整型比較-ge大于或等于 應用于:整型比較-a雙方都成立(and) 邏輯表達式 a 邏輯表達式-o單方成立(or) 邏輯表達式 o 邏輯表達式-z空字符串案例三,多個條件測試判斷#!/bin/shscores=80if $scores -gt 85 ; th

13、en    echo "very good!"elif $scores -gt 75 ; then    echo "good!"elif $scores -gt 60 ; then    echo "pass!"else    echo "no pass!"fi4. 使用if條件語句編寫MySQL備份腳本a) 自動備份Mysql數據庫腳本#!/bin/sh #auto backup mysql

14、#wugk 2012-12-12 #Define PATH定義變量BAKDIR=/data/backup/mysql/date +%Y-%m-%dMYSQLDB=webappMYSQLPW=backupMYSQLUSR=backup#must use root user run scripts 必須使用root用戶運行,$UID為系統(tǒng)變量if $UID -ne 0 ;then echo This script must use the root user ! ! ! sleep 2 exit 0fi#Define DIR and mkdir DIR 判斷目錄是否存在,不存在則新建if ! -d

15、 $BAKDIR ;then mkdir -p $BAKDIRelse echo This is $BAKDIR exists. fi#Use mysqldump backup mysql 使用mysqldump備份數據庫/usr/bin/mysqldump -u$MYSQLUSR -p$MYSQLPW -d $MYSQLDB >$BAKDIR/webapp_db.sqlecho "The mysql backup successfully "5. IF條件綜合Shell實戰(zhàn)腳本編寫通過if語句和之前變量的學習,今天我們將把我們所學的綜合在一起來講解一個實戰(zhàn)運維腳本,

16、一鍵安裝LAMP環(huán)境的腳本:一鍵源碼安裝LAMP腳本,先分解腳本的各個功能:打印菜單:1)安裝apache WEB服務器2)安裝Mysql DB服務器3)安裝PHP 服務器4)整合LAMP架構并啟動服務1、Apache服務器安裝部署。下載httpd-2.2.27.tar.gz版本,下載URL,解壓,進入安裝目錄,configure;make ;make install2、Mysql服務器的安裝。下載mysql-5.5.20.tar.bz2版本,下載URL,解壓,進入安裝目錄,configure;make ;make install3、PHP服務器安裝。下載php-5.3.8.tar.bz2版本

17、,下載URL,解壓,進入安裝目錄,configure;make ;make install4、LAMP架構的整合和服務啟動。/usr/local/apache2/bin/apachectl startvi htdocs/index.php<?phpphpinfo();?>vi auto_lamp.sh內容如下:#!/bin/bash#auto install LAMP #by wugk 2014-11#Httpd define path variableH_FILES=httpd-2.2.27.tar.bz2H_FILES_DIR=httpd-2.2.27H_URL=H_PREFI

18、X=/usr/local/apache2/#MySQL define path variableM_FILES=mysql-5.5.20.tar.gzM_FILES_DIR=mysql-5.5.20M_URL=M_PREFIX=/usr/local/mysql/#PHP define path variableP_FILES=php-5.3.28.tar.bz2P_FILES_DIR=php-5.3.28P_URL=P_PREFIX=/usr/local/php5/echo -e '03332m-0330m'echoif -z "$1" ;thenecho

19、-e "03336mPlease Select Install Menu follow:0330m"echo -e "03332m1)編譯安裝Apache服務器0331m"echo "2)編譯安裝MySQL服務器"echo "3)編譯安裝PHP服務器"echo "4)配置index.php并啟動LAMP服務"echo -e "03331mUsage: /bin/sh $0 1|2|3|4|help0330m"exitfiif "$1" -eq "

20、help" ;then echo -e "03336mPlease Select Install Menu follow:0330m" echo -e "03332m1)編譯安裝Apache服務器0331m" echo "2)編譯安裝MySQL服務器" echo "3)編譯安裝PHP服務器" echo "4)配置index.php并啟動LAMP服務" echo -e "03331mUsage: /bin/sh $0 1|2|3|4|help0330m" exitfi

21、#Install httpd web server if "$1" -eq "1" ;thenwget -c $H_URL/$H_FILES && tar -jxvf $H_FILES && cd $H_FILES_DIR &&./configure -prefix=$H_PREFIX if $? -eq 0 ;thenmake && make installecho -e "n03332m-0330m"echo -e "03332mThe $H_FILES_D

22、IR Server Install Success !0330m"elseecho -e "03332mThe $H_FILES_DIR Make or Make install ERROR,Please Check."exit 0fifi#Install Mysql DB server if "$1" -eq "2" ;then wget -c $M_URL/$M_FILES && tar -xzvf $M_FILES && cd $M_FILES_DIR &&yum ins

23、tall cmake -y ;cmake . -DCMAKE_INSTALL_PREFIX=$M_PREFIX -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306 -DWITH_XTRADB_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_

24、ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_EXTRA_CHARSETS=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BIG_TABLES=1 -DWITH_DEBUG=0make && make install/bin/cp support-files/my-f /etc/my.conf/bin/cp supp

25、ort-files/mysql.server /etc/init.d/mysqldchmod +x /etc/init.d/mysqldchkconfig -add mysqldchkconfig mysqld on if $? -eq 0 ;then make && make install echo -e "n03332m-0330m" echo -e "03332mThe $M_FILES_DIR Server Install Success !0330m" else echo -e "03332mThe $M_FILES

26、_DIR Make or Make install ERROR,Please Check." exit 0 fifi#Install PHP server if "$1" -eq "3" ;then wget -c $P_URL/$P_FILES && tar -jxvf $P_FILES && cd $P_FILES_DIR &&./configure -prefix=$P_PREFIX -with-config-file-path=$P_PREFIX/etc -with-mysql=$M_PR

27、EFIX -with-apxs2=$H_PREFIX/bin/apxs if $? -eq 0 ;then make ZEND_EXTRA_LIBS='-liconv' && make install echo -e "n03332m-0330m" echo -e "03332mThe $P_FILES_DIR Server Install Success !0330m" else echo -e "03332mThe $P_FILES_DIR Make or Make install ERROR,Please

28、Check." exit 0 fifi#if "$1" -eq "4" ;thensed -i '/DirectoryIndex/s/index.html/index.php index.html/g' $H_PREFIX/conf/httpd.conf $H_PREFIX/bin/apachectl restartecho "AddType application/x-httpd-php .php" >>$H_PREFIX/conf/httpd.confIP=ifconfig eth1|grep

29、 "Bcast"|awk 'print $2'|cut -d: -f2echo "You can access http:/$IP/"cat >$H_PREFIX/htdocs/index.php <<EOF<?phpphpinfo();?>EOFFi6. 循環(huán)語句for For 變量 in 字符串do語句1done案例一,打印seq數字循環(huán)#!/bin/shfor i in seq 15doecho “NUM is $i”done案例二,求和1-100的值#!/bin/bash#auto sum 1 100

30、j=0for (i=1;i<=100;i+)do j=expr $i + $jdoneecho $j案例三,找到相關log,然后批量打包#!/bin/shfor i in find /var/log -name “*.log”dotar czf 2014log.tgz $idone案例四,遠程主機批量傳輸文件:#!/bin/bash#auto scp files for client#by authors wugk 2014for i in seq 100 200do scp -r /tmp/test.txt root192.168.1.$i:/data/webapps/wwwDone案

31、例五,遠程主機批量執(zhí)行命令:#!/bin/bash#auto scp files for client#by authors wugk 2014for i in seq 100 200do ssh -l root 192.168.1.$i ls /tmpdone7. 循環(huán)語句whilewhile 條件語句do語句1done案例一,while條件判斷數字 #!/bin/shi=1;while $i -lt 10 ;do echo $i; (i+);done;案例二,擴展講解linux read命令read -p Please Input number:案例三,while逐行讀取某個文件#!/bi

32、n/shwhile read linedo echo $line;done < /etc/hosts綜合腳本編寫:8. Until循環(huán)語句until 條件doactiondone直到滿足條件,才退出。否則執(zhí)行action。案例一,條件判斷數字#!/bin/sha=10;until $a -lt 0 ;doecho $a;(a-);done;9. Case選擇語句case $arg in pattern1) 語句1 ; pattern2) 語句2 ; *) 語句3 ; esac案例一,創(chuàng)建選擇參數腳本#!/bin/shcase $1 in monitor_log) monitor_log

33、; archive_log) archive_log ; * ) echo "Usage:$0 monitor_log | archive_log |help " ;esac10. select選擇語句Select一般用于選擇菜單的創(chuàng)建,可以配合PS3來做菜單的打印輸出信息。#!/bin/shPS3="What you like most of the open source system?"select i in CentOS RedHat Ubuntu doecho "Your Select System: "$iDone11.

34、Shell編程函數講解shell允許將一組命令集或語句形成一個可用塊,這些塊稱為shell函數,定義函數的格式:function name () command1 .name編寫一個Apache安裝函數:#!/bin/bash#auto install LAMP #by wugk 2014-11#Httpd define path variableH_FILES=httpd-2.2.27.tar.bz2H_FILES_DIR=httpd-2.2.27H_URL=H_PREFIX=/usr/local/apache2/function Apache_install()#Install httpd

35、 web server if "$1" -eq "1" ;thenwget -c $H_URL/$H_FILES && tar -jxvf $H_FILES && cd $H_FILES_DIR &&./configure -prefix=$H_PREFIX if $? -eq 0 ;thenmake && make installecho -e "n03332m-0330m"echo -e "03332mThe $H_FILES_DIR Server Inst

36、all Success !0330m"elseecho -e "03332mThe $H_FILES_DIR Make or Make install ERROR,Please Check."exit 0fifiApache_install直接調用函數就會去運行函數里面定義的代碼了。12. Shell數組編程數組,就是相同數據類型的元素按一定順序排列的集合,就是把有限個類型相同的變量用一個名字命名,然后用編號區(qū)分他們的變量的集合,這個名字成為數組名,編號成為下標。今天這里我們來探討一維數組的定義、統(tǒng)計、引用和刪除等操作。首先來定義一個一維數組:A=( test1

37、test2 test3 ) ,定義數組一般以括號的方式來定義,數組的值可以隨機定義。如何來引用呢?echo $A0,代表引用第一個數組變量,結果會顯示test1,數組引用從0開始,代表第一個數組,依次類推。echo $A1,代表引用第二個數組變量,結果會顯示test2,數組引用也是從0開始計算的。 如何顯示該數組所有參數呢?echo $A 將顯示所有參數test1 test2 test3 。如何顯示該數組參數個數呢?echo $#A 將顯示該數組的參數個數3。如果替換某個數組呢?例如替換第二個test2數組為test5:echo $A/test2/test5如何刪除一個數組呢?例如刪除test

38、3數組命令為:unset A2 ;echo $A查看效果。那輸入如何在編程來使用呢?請看下面例子:#!/bin/sh#Auto Make KVM Virtualization#Auto config bond scriptseth_bond()NETWORK=( HWADDR=ifconfig eth0 |egrep "HWaddr|Bcast" |tr "n" " "|awk 'print $5,$7,$NF'|sed -e 's/addr:/g' -e 's/Mask:/g'|awk

39、 'print $1' IPADDR=ifconfig eth0 |egrep "HWaddr|Bcast" |tr "n" " "|awk 'print $5,$7,$NF'|sed -e 's/addr:/g' -e 's/Mask:/g'|awk 'print $2' NETMASK=ifconfig eth0 |egrep "HWaddr|Bcast" |tr "n" " "|awk &#

40、39;print $5,$7,$NF'|sed -e 's/addr:/g' -e 's/Mask:/g'|awk 'print $3' GATEWAY=route -n|grep "UG"|awk 'print $2')cat >ifcfg-bond0<<EOFDEVICE=bond0BOOTPROTO=static$NETWORK1$NETWORK2$NETWORK3ONBOOT=yesTYPE=EthernetNM_CONTROLLED=noEOF如上腳本為定義三個數組變量,然后

41、分別來引用,這樣讓腳本可讀性更強,更整潔。關于數組就簡單的介紹到這里。13. Shell編程之awk、sed命令案例分析在我們日常的Shell編程中我們會用到很多的一些語句,有的語句,如果用好了,可以讓我們的腳本更上一層樓,讓我們的功能更容易滿足企業(yè)的需求。Sed命令:sed 's/192/10/g' test.txt 把文件里面的192字符替換為10在文件開頭或者結尾添加字符:Awk命令:Find命令:Grep正則:14. 全備和增量備份Linux系統(tǒng)腳本在Linux中,我們經常需要備份系統(tǒng)重要文件,例如/etc、/boot分區(qū)、重要網站數據等等,如果每天都完整備份的話,會占

42、用很大的空間,那我們改如何來備份呢?這里采用如下方法來備份:每周日進行完整備份,其余每天為增量備份。那使用什么命令來備份呢,我們使用tar命令:全備份:tar -g /tmp/snapshot -czvf /tmp/2014_full_system_data.tar.gz /data/sh/增量備: tar -g /tmp/snapshot -czvf /tmp/2014_add01_system_data.tar.gz /data/sh/#!/bin/sh#Automatic Backup Linux System Files#Author wugk 2013-11-22#Define Va

43、riableSOURCE_DIR=( $*)TARGET_DIR=/data/backup/YEAR=date +%YMONTH=date +%mDAY=date +%dWEEK=date +%uA_NAME=date +%H%MFILES=system_backup.tgzCODE=$?if -z "$*" ;then echo -e "03332mUsage:nPlease Enter Your Backup Files or Directoriesn-nnUsage: $0 /boot /etc0330m" exitfi#Determine Whe

44、ther the Target Directory Existsif ! -d $TARGET_DIR/$YEAR/$MONTH/$DAY ;then mkdir -p $TARGET_DIR/$YEAR/$MONTH/$DAY echo -e "03332mThe $TARGET_DIR Created Successfully !0330m"fi#EXEC Full_Backup Function CommandFull_Backup()if "$WEEK" -eq "7" ;then rm -rf $TARGET_DIR/sna

45、pshot cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $FILES $SOURCE_DIR "$CODE" = "0" &&echo -e "-n03332mThese Full_Backup System Files Backup Successfully !0330m"fi#Perform incremental BACKUP Function CommandAdd_Backup() if $WEEK -ne "

46、7" ;then cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $A_NAME$FILES $SOURCE_DIR "$CODE" = "0" &&echo -e "-n03332mThese Add_Backup System Files $TARGET_DIR/$YEAR/$MONTH/$DAY/$YEAR_$A_NAME$FILES Backup Successfully !0330m" fisleep 3 Ful

47、l_Backup;Add_Backup15. Shell編程之系統(tǒng)硬件信息數據庫收集首先我們創(chuàng)建數據庫表,格式如下:CREATE TABLE audit_audit_system ( id int(11) NOT NULL AUTO_INCREMENT, ip_info varchar(50) NOT NULL, serv_info varchar(50) NOT NULL, cpu_info varchar(50) NOT NULL, disk_info varchar(50) NOT NULL, mem_info varchar(50) NOT NULL, load_info varcha

48、r(50) NOT NULL, mark_info varchar(50) NOT NULL, PRIMARY KEY (id), UNIQUE KEY ip_info (ip_info), UNIQUE KEY ip_info_2 (ip_info) );然后編寫腳本如下:#!/bin/sh#auto get system info#author wugk 2014-08-29echo -e "03334m 0331m"cat <<EOF+Welcome to use system Collect+EOFip_info=ifconfig |grep "Bcast"|tail -1 |awk 'print $2'|cut -d: -f 2cpu_info1=cat /proc/cpuinfo |grep 'model name'|tail -1 |awk -F: 'print $2'|sed &#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論