Linux自动化运维(Shell与Ansible)(杨寅冬微课版)-习题及答案_第1页
Linux自动化运维(Shell与Ansible)(杨寅冬微课版)-习题及答案_第2页
Linux自动化运维(Shell与Ansible)(杨寅冬微课版)-习题及答案_第3页
Linux自动化运维(Shell与Ansible)(杨寅冬微课版)-习题及答案_第4页
Linux自动化运维(Shell与Ansible)(杨寅冬微课版)-习题及答案_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目一练习题参考答案1.选择题(1)下列哪个变量表示当前Shell的路径?()A.$BASH B.$SHELL C.$KSH D.$C参考答案:B(2)如果要将新的环境变量VAR加入当前Shell,下列哪个命令可以实现?()A.setVAR=value B.exportVAR=value C.VAR=value D.echoVAR=value参考答案:B(3)在环境变量PATH中,冒号分隔的各个目录分别表示什么意义?()A.用户的主目录 B.系统的配置文件目录C.可执行文件的搜索路径 D.常用的工具的安装目录参考答案:C(4)下列哪个命令可以用来加载配置文件?()A.exec B.load C.source D.Include参考答案:C(5)以下哪个是逻辑与运算符?()A.+ B.- C.* D.&&参考答案:B(6)关于输出重定向,以下哪种写法将输出追加到文件的末尾?()A.command>filename B.command>>filenameC.command<filename D.command<<filename参考答案:B(7)以下哪个命令可以在输出中控制输出格式?()A.echo B.printf C.read D.cat参考答案:B(8)使用printf命令输出带双引号的字符串,应该写成下列哪项?()A.printf"Thisisastringwith"doublequotes"inside."B.printf'Thisisastringwith"doublequotes"inside.'C.printf"Thisisastringwith\"doublequotes\"inside."D.printf'Thisisastringwith\”doublequotes\”inside.'参考答案:C(9)如何设置环境变量MYVAR为helloworld?()A.MYVAR="helloworld" B.setMYVAR="helloworld"C.exportMYVAR="helloworld" D.setenvMYVAR="helloworld"参考答案:C(10)以下哪个选项是Shell中用于赋值的算术运算符?()A.+ B.- C.== D.=参考答案:D(11)以下哪个选项是printf命令用于输出字符串的格式化符号?()A.%s B.%d C.%f D.%x参考答案:A(12)以下哪个选项是printf命令用于输出整数的格式化符号?()A.%s B.%d C.%f D.%x参考答案:B2.实训题(1)编写一个Shell脚本,将当前日期和时间输出重定向到名为datetime.txt的文件中。[opencloud@server~]$catdate.sh#!/bin/bashdate>datetime.txt[opencloud@server~]$chmod+xdate.sh[opencloud@server~]$./date.sh[opencloud@server~]$catdatetime.shSatMay1110:05:52AMCST2024(2)编写一个Shell脚本,要求用户输入姓名、年龄和职业,并使用echo命令将这些信息输出到屏幕上。[opencloud@server~]$catinfo.sh#!/bin/bashread-p"insert_name:"nameread-p"insert_age:"ageread-p"insert_job:"jobecho"name:$name"echo"age:$age"echo"job:$job"[opencloud@server~]$chmod+xinfo.sh[opencloud@server~]$./info.shinsert_name:userinsert_age:1000insert_job:devopsname:userage:1000job:devops(3)编写一个Shell脚本,使用read命令获取用户输入的数字,然后计算该数字的平方并输出到屏幕上。[opencloud@server~]$catsquare.sh#!/bin/bashread-p"insert_number:"numberanswer=$((number*number))echo"square:$answer"[opencloud@server~]$chmod+xsquare.sh[opencloud@server~]$./square.shinsert_number:16square:256(4)编写一个Shell脚本,用户输入姓名定义一个名为avatar的变量。然后使用echo命令将该变量输出到屏幕上,并将其永久设置为环境变量。[opencloud@server~]$catvar.sh#!/bin/bashread-p"请输入您的姓名:"nameavatar=$nameecho"您的姓名是:$avatar"echo"exportavatar=$avatar">>~/.bashrc[opencloud@server~]$chmod+xvar.sh[opencloud@server~]$./var.sh请输入您的姓名:admin您的姓名是:admin[opencloud@server~]$source~/.bashrc[opencloud@server~]$echo$avataradmin(5)编写一个Shell脚本,要求用户输入一个文件名,然后将用户输入的内容保存到该文件中,并使用输入重定向将错误信息输出到error.log文件中。[opencloud@server~]$catfile.sh#!/bin/bashread-p"请输入文件名:"filenameecho"请输入文件内容(按Ctrl+D结束输入):"cat>"$filename"2>error.logif[-serror.log];thenecho"发生错误,请查看error.log文件了解详情。"elseecho"文件保存成功。"fi[opencloud@server~]$chmod+xfile.sh[opencloud@server~]$./file.sh请输入文件名:testfile请输入文件内容(按Ctrl+D结束输入):thisistestfilecontent#pressCTRL+DNOW#文件保存成功。[opencloud@server~]$cattestfilethisistestfilecontent#pressCTRL+DNOW#[opencloud@server~]$tree.├──error.log├──file.sh└──testfile0directories,3files项目二练习题参考答案1.选择题(1)以下哪个选项用于判断一个文件是否存在且为普通文件?()A.-d B.-e C.-f D.-r参考答案:C(2)在Shell脚本中,以下哪个选项用于判断两个整数是否相等?()A.-eq B.-lt C.-ne D.-gt参考答案:A(3)以下哪个选项是if语句的基本语法?()A.if[condition] B.if(condition) C.if{condition} D.if<condition>参考答案:A(4)在Shell脚本中,以下哪个选项用于实现多条件选择语句?()A.if B.else C.case D.for参考答案:C(5)在Shell脚本中,以下哪个选项用于实现条件控制的结束?()A.endif B.end C.done D.fi参考答案:D(6)在Shell脚本中,以下哪个选项用于实现多个条件的逻辑或关系?()A.|| B.&& C.or D.and参考答案:A(7)在if语句的基本语法中,以下哪个关键字用于执行条件为假对应的代码块?()A.if B.then C.else D.fi参考答案:C(8)在if语句的基本语法中,以下哪个关键字用于处理存在多个条件的情况?()A.elif B.if C.then D.else参考答案:A2.实训题(1)在Shell脚本中,编写一个if语句,判断一个整数是否为偶数,如果是,则输出“是偶数”,否则输出“是奇数”。字,并分别输出对应的提示信息。[opencloud@server~]$catevenodd.sh#!/bin/bashread-p"请输入一个整数:"number#使用取余运算符判断是否为偶数if((number%2==0));thenecho"是偶数"elseecho"是奇数"fi(2)在Shell脚本中,编写一个if语句,判断一个字符是否为大写字母、小写字母或数字,并分别输出对应的提示信息。[opencloud@server~]$catctype.sh#!/bin/bashread-p"请输入一个字符:"charif[[$char=~^[[:upper:]]$]];thenecho"是大写字母"elif[[$char=~^[[:lower:]]$]];thenecho"是小写字母"elif[[$char=~^[[:digit:]]$]];thenecho"是数字"elseecho"不是大写字母、小写字母或数字"fi(3)在Shell脚本中,编写一个if语句,判断一个文件是否存在且为目录,如果是,则输出该目录的信息;否则输出“该目录不存在”。[opencloud@server~]$catdirornot.sh#!/bin/bashread-p"请输入一个目录路径:"directoryif[-d"$directory"];thenecho"该目录存在,以下是目录的信息:"ls-l"$directory"elseecho"该目录不存在"fi(4)在Shell脚本中,编写一个case语句,根据用户输入的数字,其取值范围为1~5,分别输出对应的内容(1表示计算机网络,2表示Linux操作系统,3表示云计算OpenStack,4表示容器云Kubernetes和OpenShift,5表示Ansible自动化)。[opencloud@server~]$catlist.sh#!/bin/bashcontents=("ComputerNetwork""Linux""OpenStack""Kubernetes&OpenShift""Ansible")read-p"请输入一个数字(取值范围为1~5):"numberif((number>=1&&number<=5));thencontent=${contents[number-1]}echo$contentelseecho"输入的数字不在取值范围内"fi(5)在Shell脚本中,编写一个if语句,判断一个字符串是否为空,如果是,则输出“字符串为空”;否则输出字符串的长度。[opencloud@server~]$catstr.sh#!/bin/bashread-p"请输入一个字符串:"strif[-z"$str"];thenecho"字符串为空"elselength=${#str}echo"字符串长度为:$length"fi(6)在Shell脚本中,需要判断当前系统的CPU使用率是否超过80%。请编写一个if语句,输出相应的监控信息。[opencloud@server~]$catperc.sh#!/bin/bashcpu_usage=$(top-bn1|grep"Cpu(s)"|awk'{print$2}')cpu_usage=${cpu_usage%.*}if["$cpu_usage"-gt80];thenecho"当前CPU使用率为$cpu_usage%,超过80%阈值"elseecho"当前CPU使用率为$cpu_usage%,未超过80%阈值"fi(7)在Shell脚本中,需要判断当前操作系统类型。请编写一个if语句,输出相应的测试信息。[opencloud@server~]$catostype.sh#!/bin/bashos_type=$(uname-s)if["$os_type"="Linux"];thenecho"当前操作系统为Linux"elseuname-sfi

项目三练习题参考答案1.选择题(1)下列哪个for语句用于遍历数组中的元素?()A.foriin{1..5};doecho$i;done B.foriin(12345);doecho$i;doneC.foriin[12345];doecho$i;done D.foriin12345;doecho$i;done参考答案:A(2)在Shell脚本中,如何使用for语句输出数字1~10的所有偶数?()A.foriin{1..10};doif[$((i%2))-eq0];thenecho$i;fi;doneB.foriin(12345678910);doif[$((i%2))-eq0];thenecho$i;fi;doneC.foriin13579;doecho$i;doneD.foriin{2..10..2};doecho$i;done参考答案:D(3)如何在Shell脚本中使用for语句遍历一个目录中的所有文件?()A.forfilein$(ls/path/to/directory);doecho$file;doneB.forfileinls/path/to/directory;doecho$file;doneC.forfilein/path/to/directory/*;doecho$file;doneD.forfilein/path/to/directory;doecho$file;done参考答案:C(4)如何在Shell脚本中使用for语句读取一个文本文件的内容并输出?()A.forlinein$(catfile.txt);doecho$line;doneB.forlinein(catfile.txt);doecho$line;doneC.forlineinfile.txt;doecho$line;doneD.forlinein$(file.txt);doecho$line;done参考答案:A(5)在Shell脚本中,如何使用for语句遍历一个数组并输出数组元素的总和?()A.sum=0;fornumin(12345);dosum=$((sum+num));done;echo$sumB.sum=0;fornumin{1..5};dosum=$((sum+num));done;echo$sumC.sum=0;fornumin[12345];dosum=$((sum+num));done;echo$sumD.sum=0;fornumin12345;dosum=$((sum+num));done;echo$sum参考答案:B(6)在Shell脚本中,如何使用while语句计算1~10的所有整数的总和?()A.num=1;sum=0;while[$num-le10];dosum=$((sum+num));done;echo$sumB.num=1;sum=0;while[$num-le10];dosum=$((sum+num));num=$((num-1));done;echo$sumC.num=1;sum=0;while[$num-le10];dosum=$((sum+num));done;echo$sumD.num=1;sum=0;while[$num-le10];dosum=$((sum+num));num=$((num+1));done;echo$sum参考答案:C(7)在Shell脚本中,如何使用while语句从1开始输出连续的数字,直到用户输入的数字大于10为止?()A.num=1;while[$num-le10];doecho$num;num=$((num+1));doneB.num=1;while[$num-le10];doecho$num;readnum;doneC.num=1;while[$num-le10];doecho$num;readinput;num=$((input+1));doneD.num=1;while[$num-le10];doecho$num;readnum;num=$((num+1));done参考答案:A(8)在Shell脚本中,如何使用until语句输出1~5的数字?()A.num=1;until[$num-le5];doecho$num;num=$((num+1));doneB.num=1;until[$num-ge5];doecho$num;num=$((num+1));doneC.num=1;until[$num-gt5];doecho$num;num=$((num+1));doneD.num=1;until[$num-lt5];doecho$num;num=$((num+1));done参考答案:C(9)在Shell脚本中,如何使用select语句让用户选择数字1~5?()A.selectnumin1,2,3,4,5;doecho$num;doneB.selectnumfrom1to5;doecho$num;doneC.selectnumfrom1,2,3,4,5;doecho$num;doneD.selectnumin12345;doecho$num;done参考答案:D2.实训题(1)编写一个Shell脚本,在指定目录#read或sh内指定#下统计所有文件的大小并输出。[opencloud@server~]$catsize.sh#!/bin/bashread-p"请输入目录路径:"directorytotal_size=0find"$directory"-typef|whileread-rfile;dofile_size=$(du-b"$file"|awk'{print$1}')total_size=$((total_size+file_size))doneecho"总文件大小:$total_size字节"(2)编写一个Shell脚本,使用while语句计算1~100的累加和并输出结果。[opencloud@server~]$catsum.sh#!/bin/bashnum=1sum=0while[$num-le100];dosum=$((sum+num))num=$((num+1))doneecho"累加和为:$sum"(3)在某个路径中查找是否有文件存在,使用until语句轮询检查,直到条件为真为止,如果到最大重试次数#READ还是指定#也无法找到目标文件,就退出脚本。[opencloud@server~]$catfindfile.sh#!/bin/bashread-p"请输入目标路径:"target_pathread-p"请输入最大重试次数:"max_retriesretry_count=0until["$(ls-A$target_path)"];doif[$retry_count-eq$max_retries];thenecho"无法找到任何文件,达到最大重试次数。退出脚本。"exit1fiecho"目标路径中没有文件。重试中..."retry_count=$((retry_count+1))sleep1doneecho"找到了至少一个文件!"(4)编写一个Shell脚本,使用for语句遍历指定目录下的所有文件,并输出文件的名称和大小。[opencloud@server~]$catfordir.sh#!/bin/bashread-p"请输入目标目录路径:"directoryforfilein"$directory"/*;doif[-f"$file"];thenecho"文件名:$(basename"$file")"echo"文件大小:$(du-sh"$file"|cut-f1)"echo"-------------------------"fidone(5)编写一个Shell脚本,使用for语句批量重命名指定目录下文件名以file开头的所有文件,在文件名后加上“_backup”。可以出成.bak的近似备份题[opencloud@server~]$catbackup.sh#!/bin/bashread-p"请输入目标目录路径:"directoryforfilein"$directory"/file*;doif[-e"$file"];thennew_name="${file}_backup"mv"$file""$new_name"echo"已重命名文件:$(basename"$file")为$(basename"$new_name")"fidone

项目四练习题参考答案1.选择题(1)以下哪个选项正确描述了Shell数组?()A.数组可以只包含数字类型的元素 B.数组在声明时需要指定长度C.数组的索引从1开始 D.数组可以包含不同类型的元素参考答案:D(2)在Shell脚本中,如何声明一个数组?()A.array=1,2,3 B.array={1,2,3} C.array=[1,2,3] D.array=("1""2""3")参考答案:d(3)如何获取数组的长度(元素个数)?()A.${array[length]} B.${array.size} C.${#array[@]} D.${array.length}参考答案:C(4)以下哪个选项描述了在Shell中定义函数的正确语法?()A.functionmyFunction{echo"HelloWorld"}B.defmyFunction(){echo"HelloWorld"}C.funcmyFunction(){echo"HelloWorld"}D.myFunction(){echo"HelloWorld"}参考答案:A(5)在Shell脚本中,如何遍历数组array并输出其每个元素?()A.foriin${array};doecho$i;doneB.foriin"${array[@]}";doecho$i;doneC.foriin${array[@]};doecho$i;doneD.foriin"${array}";doecho$i;done参考答案:B(6)以下哪个选项描述了在Shell中创建关联数组的正确方法?()A.declare-aassoc_array=("key1""value1""key2""value2")B.assoc_array=("key1""value1""key2""value2")C.declare-Aassoc_array=("key1""value1""key2""value2")D.assoc_array["key1"]="value1"assoc_array["key2"]="value2"参考答案:C(7)以下哪个选项描述了在Shell函数中获取传递给函数的参数个数?()A.$0 B.$#args C.$@ D.$#参考答案:D(8)以下哪个选项描述了在Shell函数中定义一个局部变量?()A.localmyVar="value" B.myVar="value"C.setmyVar="value" D.varmyVar="value"参考答案:A(9)在Shell脚本中,如何删除数组中指定索引的元素?()A.unsetarray[index] B.unsetarray[index-1]C.deletearray[index] D.deletearray[index-1]参考答案:A(10)在Shell中定义了一个函数:functionadd_numbers(){sum=$(($1+$2));echo"Thesumof$1and$2is:$sum";}。以下哪个选项描述了在Shell中调用函数时传递参数的正确方法?()A.add_numbers1020 B.add_numbers(10,20)C.add_numbers-p1020 D.add_numbers[1020]参考答案:A(11)在Shell脚本中定义了函数functionget_date(){echo$(date);},如何将函数的输出结果保存到变量中?()A.result=get_date B.result=$(get_date)C.result=[get_date] D.result={get_date}参考答案:B2.实训题(1)编写一个Shell脚本,要求用户输入5个城市名称,并将这些城市名称存储在一个数组中,然后输出数组中的城市名称列表。[opencloud@server~]$catcities.sh#!/bin/bashcities=()for((i=1;i<=5;i++));doread-p"请输入第$i个城市名称:"citycities+=("$city")doneecho"城市名称列表:"forcityin"${cities[@]}";doecho"$city"done(2)编写一个Shell脚本,定义一个包含10个整数的数组。然后,使用循环遍历数组中的所有元素,并计算它们的总和和均值,将结果输出。[opencloud@server~]$catlistsum.sh#!/bin/bashmy_array=(25810152025303540)sum=0count=0fornumin"${my_array[@]}";dosum=$((sum+num))count=$((count+1))doneaverage=$((sum/count))echo"数组元素总和:$sum"echo"数组元素均值:$average"(3)编写一个Shell脚本,定义一个包含10个随机数的数组。然后,找到数组中的最大值和最小值并输出。[opencloud@server~]$catrandom.sh#!/bin/bashmy_array=()for((i=0;i<10;i++));dorandom_num=$((RANDOM%100))my_array+=($random_num)donemax=${my_array[0]}min=${my_array[0]}fornumin"${my_array[@]}";doif[$num-gt$max];thenmax=$numfiif[$num-lt$min];thenmin=$numfidoneecho"数组中的最大值:$max"echo"数组中的最小值:$min"(4)编写一个Shell脚本,定义两个包含5个元素的数组,分别用于存储学生的姓名和对应的成绩。然后,根据成绩从高到低对学生姓名进行排序,并输出排序后的学生姓名和对应的成绩。[opencloud@server~]$catgradesort.sh#!/bin/bashnames=("Alice""Bob""Charlie""David""Emily")scores=(8592789588)quick_sort(){localleft=$1localright=$2localpivot_index=$(((left+right)/2))locali=$leftlocalj=$rightwhile((i<=j));dowhile((scores[i]>scores[pivot_index]));do((i++))donewhile((scores[j]<scores[pivot_index]));do((j--))doneif((i<=j));thentemp_score=${scores[i]}scores[i]=${scores[j]}scores[j]=$temp_scoretemp_name=${names[i]}names[i]=${names[j]}names[j]=$temp_name((i++))((j--))fidoneif((left<j));thenquick_sort"$left""$j"fiif((i<right));thenquick_sort"$i""$right"fi}quick_sort0$((${#scores[@]}-1))echo"排序后的学生姓名和成绩:"for((i=0;i<${#scores[@]};i++));doecho"${names[i]}:${scores[i]}"done(5)编写一个Shell脚本,定义一个函数check_disk_space。该函数接收一个路径作为参数,并检查该路径的磁盘空间使用情况。如果磁盘空间使用率超过80%,则输出警告信息;否则输出磁盘空间使用情况。然后调用该函数,并传递一个路径参数进行测试。[opencloud@server~]$catdisksize.sh#!/bin/bashcheck_disk_space(){echo"请输入路径:"read-rpathif[!-d"$path"];thenecho"错误:路径不存在!"returnfidisk_usage=$(df-h"$path"|tail-n1)usage_percentage=$(echo"$disk_usage"|awk'{printsubstr($5,1,length($5)-1)}')echo"磁盘空间使用情况:"echo"$disk_usage"if["$usage_percentage"-gt80];thenecho"警告:磁盘空间使用率超过80%!"fi}check_disk_space(6)编写一个Shell脚本,定义一个函数calculate_factorial。该函数接收一个正整数作为参数,并计算其阶乘。然后调用该函数,并输出1~10的阶乘值。[opencloud@server~]$catcalcfact.sh#!/bin/bashcalculate_factorial(){num=$1factorial=1for((i=1;i<=num;i++));dofactorial=$((factorial*i))doneecho"阶乘$num!=$factorial"}for((n=1;n<=10;n++));docalculate_factorial$ndone(7)编写一个Shell脚本,定义一个函数backup_files。该函数接收两个参数,分别是源目录和目标目录。该函数将源目录中的所有文件备份到目标目录中,并保留文件的目录结构。然后调用该函数,并传递两个目录参数进行测试。[opencloud@server~]$catbakup.sh#!/bin/bashbackup_files(){echo"请输入源目录路径:"read-rsource_dirif[!-d"$source_dir"];thenecho"错误:源目录不存在!"returnfiecho"请输入目标目录路径:"read-rtarget_dirif[!-d"$target_dir"];thenmkdir-p"$target_dir"ficp-R"$source_dir"/*"$target_dir"echo"备份完成!"}backup_files(8)编写一个Shell脚本,定义一个函数check_service_status。该函数接收一个服务名称作为参数,并检查该服务是否在运行。如果服务正在运行,则输出“Serviceisrunning”;否则输出“Serviceisnotrunning”。然后调用该函数,并传递一个服务名称进行测试。[opencloud@server~]$catsrvchk.sh#!/bin/bashcheck_service_status(){echo"请输入服务名称:"read-rservice_nameifsystemctlis-active"$service_name">/dev/null2>&1;thenecho"Serviceisrunning"elseecho"Serviceisnotrunning"fi}check_service_status(9)编写一个Shell脚本,定义一个函数find_duplicate_files。该函数接收一个目录作为参数,并查找该目录及其子目录中的重复文件。然后输出所有重复文件的列表。提示:可以使用md5sum命令计算文件的MD5值来判断文件是否重复。然后调用该函数,并传递一个目录参数进行测试。[opencloud@server~]$catfindup.sh#!/bin/bashfind_duplicate_files(){echo"请输入目录路径:"read-rdirectoryif[!-d"$directory"];thenecho"错误:目录不存在!"returnfideclare-AfileswhileIFS=read-rfile;domd5=$(md5sum"$file"|awk'{print$1}')if[-n"${files[$md5]}"];thenecho"重复文件:$file"echo"原始文件:${files[$md5]}"echo"-----"elsefiles[$md5]=$filefidone<<(find"$directory"-typef2>/dev/null)}find_duplicate_files

项目五练习题参考答案1.选择题(1)通过grep命令,查找包含字母“k”的行,下面哪个选项符合要求?()A.**`grep"k"data.txt`** B.**`grep"k$"data.txt`**C.**`grep"^k"data.txt`** D.**`grep"ki"data.txt`**参考答案:A(2)通过grep命令,查找以“e”结尾的行,下面哪个选项符合要求?()A.**`grep"e"data.txt`** B.**`grep"e$"data.txt`**C.**`grep"^e"data.txt`** D.**`grep"end$"data.txt`**参考答案:B(3)通过grep命令,查找包含“ap”的行,下面哪个选项符合要求?()A.**`grep"ap"data.txt`** B.**`grep"ap$"data.txt`**C.**`grep"^ap"data.txt`** D.**`grep"apple"data.txt`**参考答案:A(4)通过grep命令,查找以“a”开头且以“e”结尾的行,下面哪个选项符合要求?()A.**`grep"a"data.txt|grep"e$"`** B.**`grep"^a"data.txt|grep"e$"`**C.**`grep"a.*e"data.txt`** D.**`grep"^a.*e$"data.txt`**参考答案:D(5)通过grep命令,查找以“k”开头或者以“e”结尾的行,下面哪个选项符合要求?()A.grep"k|e"data.txt B.grep"k\|e"data.txtC.grep"^[k|e]"data.txt D.grep"k.*|.*e$"data.txt参考答案:B(6)通过grep命令,查找包含连续相同的两个字母的行(例如“banana”),下面哪个选项符合要求?()A.grep"\(.\)\\1"data.txt B.grep"\(..\)\\1"data.txtC.grep"\(.\)\\1{2}"data.txt D.grep"\(..\)\\1{2}"data.txt参考答案:A(7)使用sed命令删除源数据中所有包含“apple”的行,下面哪个选项符合要求?()A.sed'/^apple$/d'data.txt B.sed'/apple/d'data.txtC.sed's/apple//g'data.txt D.sed's/^apple$//g'data.txt参考答案:B(8)使用sed命令将源数据中所有的“Shell”替换为“Python”,下面哪个选项符合要求?()A.sed's/Shell/Python/g'data.txt B.sed's/Shell/Python/'data.txtC.sed'/Shell/Python/'data.txt D.sed'/Shell/Python/g'data.txt参考答案:A(9)使用sed命令将源数据中的电话号码格式转换为“(123)456-7890”格式,下面哪个选项符合要求?()A.sed's/\([0-9]\{3\}\)-\([0-9]\{3\}\)-\([0-9]\{4\}\)/(\1)\2-\3/'data.txtB.sed's/\([0-9]\{3\}\)-\([0-9]\{3\}\)-\([0-9]\{4\}\)/(\2)\3-\1/'data.txtC.sed's/\([0-9]\{3\}\)-\([0-9]\{3\}\)-\([0-9]\{4\}\)/(\3)\2-\1/'data.txtD.sed's/\([0-9]\{3\}\)-\([0-9]\{3\}\)-\([0-9]\{4\}\)/(\1)\3-\2/'data.txt参考答案:A(10)使用sed命令在源数据的每行最前面添加行号,下面哪个选项符合要求?()A.sed=data.txt|sed'N;s/\n/\t/' B.sed=data.txt|sed'N;g/\n/\t/'C.sed=data.txt|sed'N;d/\n/\t/' D.sed=data.txt|sed'N;t/\n/\t/'参考答案:A(11)通过awk命令,提取出文件中的所有姓名(即第一列数据),正确的命令是()。A.awk'{print$1}'data.txt B.awk'{print$2}'data.txtC.awk'{print$0}'data.txt D.awk'{print$1,$2}'data.txt参考答案:A(12)通过awk命令,以逗号为分隔符,计算第二列数据的总和,源文件为data.txt,正确的命令是()。A.awk-F',''{sum+=$0}END{printsum}'data.txtB.awk-F',''{sum+=$1}END{printsum}'data.txtC.awk-F',''{sum+=$2}END{printsum}'data.txtD.awk-F',''{sum+=$3}END{printsum}'data.txt参考答案:C(13)通过awk命令,以逗号为分隔符,计算第二列数据的均值并输出,正确的命令是()。A.awk-F',''{sum+=$2}END{printsum/NR}'data.txtB.awk-F',''{sum+=$1}END{printsum/NR}'data.txtC.awk-F',''{avg+=$2}END{printavg}'data.txtD.awk-F',''{avg+=$1}END{printavg}'data.txt参考答案:A(14)通过awk命令,查找第一列包含“an”的行并输出,正确的命令是()。A.awk'/an/{print$1}'data.txt B.awk'/an/{print$2}'data.txtC.awk'/an/{print$0}'data.txt D.awk'/an/{print$3}'data.txt参考答案:A(15)通过awk命令,将文本中的逗号替换为冒号并输出,正确的命令是()。A.awk'{gsub(",",":",$0);print}'data.txt B.awk'{sub(",",":",$0);print}'data.txtC.awk'{gsub(":",",",$0);print}'data.txt D.awk'{sub(":",",",$0);print}'data.txt参考答案:A2.实训题(1)使用sed命令将文件data.txt中的所有字母转换为大写字母,并输出到新文件data_uppercase.txt中。[opencloud@server~]$sed's/[a-z]/\U&/g'data.txt>data_uppercase.txt(2)使用sed命令从文件employees.txt中删除所有包含“Manager”的行,并将结果输出到新文件updated_employees.txt中。[opencloud@server~]$sed'/Manager/d'employees.txt>updated_employees.txt(3)使用sed命令从文件contacts.csv中提取所有以电子邮箱结尾的行,并将结果输出到新文件emails.txt中。[opencloud@server~]$sed-n'/@.*$/p'contacts.csv>emails.txt(4)使用sed命令将文件numbers.txt中所有数字“加倍”(例如1变成11,2变成22,3变成33),并将结果输出到新文件doubled_numbers.txt中。[opencloud@server~]$sed's/[0-9]/&&/g'numbers.txt>doubled_numbers.txt(5)使用sed命令从文件data.xml中提取所有<name>标签的内容,并将结果输出到新文件names.txt中。[opencloud@server~]$sed-n's/.*<name>\(.*\)<\/name>.*/\1/p'data.xml>names.txt(6)假设有一个数据文件students.txt记录了学生信息,每行格式为:学生姓名学号课程1成绩课程2成绩课程3成绩。请使用awk命令计算每个学生的平均成绩,并输出到终端。[opencloud@server~]$awk'{sum=0;for(i=3;i<=NF;i++)sum+=$i;avg=sum/(NF-2);print$1,avg}'students.txt(7)假设有一个数据文件sales.txt记录了每个销售人员的销售业绩,每行格式为:姓名销售金额。请使用awk命令找出销售金额最高的销售人员姓名和销售金额,并输出到终端。[opencloud@server~]$awk'BEGIN{max_sales=0;max_name=""}$2>max_sales{max_sales=$2;max_name=$1}END{print"最高销售金额的销售人员姓名:",max_name,"销售金额:",max_sales}'sales.txt(8)假设有一个数据文件inventory.txt记录了商品库存信息,每行格式为:商品编号商品名称库存数量。请使用awk命令找出库存数量小于10的商品的信息,并输出到终端。[opencloud@server~]$awk'$3<10{print"商品编号:",$1,"商品名称:",$2,"库存数量:",$3}'inventory.txt(9)假设有一个数据文件sales.txt记录了每个销售人员的销售业绩,每行格式为:姓名月份销售金额。请使用awk命令计算每个销售人员全年的总销售金额,并输出到终端。[opencloud@server~]$awk'{sales[$1]+=$3}END{for(nameinsales)print"销售人员:",name,"全年总销售金额:",sales[name]}'sales.txt(10)假设有一个数据文件expenses.txt记录了公司员工的交通费用和餐饮费用,每行格式为:姓名交通费用餐饮费用。请使用awk命令计算每个员工的总费用,并输出到新文件total_expenses.txt中,每行格式为:姓名总费用。[opencloud@server~]$awk'{total=$2+$3;print$1,total}'expenses.txt>total_expenses.txt

项目六练习题参考答案1.选择题(1)Ansible默认使用什么协议与受管主机进行通信?()A.FTP B.HTTP C.SSH D.Telnet参考答案:C(2)关于Ansible自动化工具的描述,下面选项描述正确的是?()A.需要在远程主机上安装额外的代理程序 B.只能在Linux操作系统上运行C.使用SSH进行通信,以保证通信安全 D.不支持对多个主机同时执行任务参考答案:C(3)Ansible默认的配置文件是什么?()A.ansible.cfg B.ansible.conf C.ansible.yml D.ansible.ini参考答案:A(4)关于Ansible的AdHoc命令,下面选项描述正确的是?()A.一种只能在特定时间运行的命令B.一种在单个主机上并行执行的命令C.一种用于创建和管理主机清单文件的命令D.一种用于手动执行特定任务的命令参考答案:D(5)使用AdHoc命令时,可以同时指定多个目标主机吗?()A.可以,使用逗号分隔 B.可以,使用空格分隔C.不可以,只能指定一个目标主机 D.不可以,需要编写一个Playbook来实现参考答案:A(6)如果想要在受管主机上切换到root用户,应该在AnsiblePlaybook中设置哪个选项?()A.remote_user B.host_key_checking C.become D.become_user参考答案:D(7)如果不想在SSH连接时检查主机密钥,应该在ansible.cfg中设置哪个选项?()A.remote_user B.host_key_checking C.become D.ask_pass参考答案:B(8)如果想要在受管主机上切换用户,并且使用sudo方式,应该在AnsiblePlaybook中设置哪个选项?()A.remote_user B.become_method C.become_user D.become_ask_pass参考答案:C(9)如果想要在受管主机上切换到特定用户(例如root),并且不需要提示输入密码,应该在ansible.cfg中设置哪个选项?()A.remote_user B.become_method C.become_user D.become_ask_pass参考答案:D(10)如果在执行Ansible命令的目录中同时存在ansible.cfg和/etc/ansible/ansible.cfg文件,哪个配置文件将被优先使用?()A.ansible.cfg B./etc/ansible/ansible.cfgC.两者都不会被使用 D.取决于配置文件中的优先级设置参考答案:A(11)如果在执行Ansible命令的目录中存在ansible.cfg文件,并且在用户的家目录中存在~/.ansible.cfg文件,哪个配置文件将被优先使用?()A.ansible.cfg B.~/.ansible.cfg C.两者都不会被使用 D.两者都会被使用参考答案:B(12)如果在执行Ansible命令的目录中不存在ansible.cfg和~/.ansible.cfg文件,但设置了环境变量ANSIBLE_CONFIG指向/opt/ansible/ansible.cfg文件,哪个配置文件将被优先使用?()A.ansible.cfg B./opt/ansible/ansible.cfgC.两者都不会被使用 D.取决于配置文件中的优先级设置参考答案:B2.实训题#操作题无法给出答案#(1)某企业需要在多个Linux服务器上进行自动化部署和管理,服务器涵盖多种Linux发行版。为了提高运维效率,需要使用Ansible作为自动化工具来管理这些服务器。当前,Ansible服务器操作系统为CentOSStream9,其他受管主机分别使用CentOS、RHEL、Ubuntu、华为openEuler等系统。现需要在CentOSStream9中安装Ansible,并创建Ansible主机清单文件,将其他远程主机的IP地址加入清单文件中,配置SSH免密码登录,确保Ansible控制节点可以无密码验证连接到其他远程主机。#重复#(2)某企业需要在多个Linux服务器上进行自动化部署和管理,服务器涵盖多种Linux发行版。为了提高运维效率,需要使用Ansible作为自动化工具来管理这些服务器。当前,Ansible服务器操作系统为Ubuntu22,其他受管主机分别使用CentOS、RHEL、Ubuntu、华为openEuler等系统。现需要在Ubuntu22中安装Ansible,并创建Ansible主机清单文件,将其他远程主机的IP地址加入清单文件中,配置SSH免密码登录,确保Ansible控制节点可以无密码验证连接到其他远程主机。

项目七练习题参考答案1.选择题(1)AnsiblePlaybook使用什么格式定义自动化任务?()A.XML格式 B.YAML格式 C.JSON格式 D.INI格式参考答案:B(2)在AnsiblePlaybook中,如何指定需要执行任务的目标主机?()A.在命令行参数中指定 B.使用hosts属性指定C.使用tasks属性指定 D.使用groups变量指定参考答案:B(3)在AnsiblePlaybook中,tasks属性的作用是什么?()A.定义主机清单文件 B.定义要执行的任务C.定义变量 D.定义条件语句参考答案:B(4)在AnsiblePlaybook中,可以在tasks中包含多个任务,这些任务将如何执行?()A.按顺序依次执行 B.随机执行 C.并行执行 D.根据条件选择性执行参考答案:A2.实训题(1)运维工程师负责管理一个服务器集群。使用AnsiblePlaybook来管理防火墙设置,添加允许的入站规则、端口、限制特定IP地址的访问。请针对此服务器的服务进行防火墙策略的配置,Web服务器需要开放80和443端口,数据库服务器需要开放3306端口。限制来自172网段IP地址的访问,只有192网段可以访问SSH端口。----name:ManageFirewallSettingshosts:serverbecome:truetasks:-name:AllowincomingHTTPtraffic(port80)firewalld:port:80/tcpzone:publicstate:enabledimmediate:yes-name:AllowincomingHTTPStraffic(port443)firewalld:port:443/tcpzone:publicstate:enabledimmediate:yes-name:AllowincomingMySQLtraffic(port3306)firewalld:port:3306/tcpzone:publicstate:enabledimmediate:yes-name:Limitaccessfrom172networktospecificservicesfirewalld:source:/8zone:publicservice:"{{item}}"state:enabledimmediate:yesloop:-http-https-mysql-name:AllowSSHaccessonlyfrom192networkfirewalld:source:/8port:sshzone:publicstate:enabledimmediate:yes(2)自动化运维工程师管理服务器集群,现在需要在opencloud.lab.example.fun服务器上部署DHCP服务,以实现动态IP地址分配,内网主机能够正常获得IP地址和网络配置。使用AnsiblePlaybook来安装和配置DHCP服务,在所有目标主机上设置DHCP服务器,同时配置IP地址池、子网掩码、网关等网络参数。确保DHCP服务器能够正确地响应客户端请求,并分配合适的IP地址。----name:DeployDHCPServerhosts:opencloud.lab.example.funbecome:truevars:dhcp_subnet:dhcp_netmask:dhcp_range_start:00dhcp_range_end:00dhcp_gateway:dhcp_dns:tasks:-name:InstallDHCPpackageyum:name:-dhcpstate:present-name:ConfigureDHCPservertemplate:src:templates/dhcpd.conf.j2dest:/etc/dhcp/dhcpd.confnotify:-restartdhcpd-name:StartandenableDHCPserviceservice:name:dhcpdstate:startedenabled:yeshandlers:-name:restartdhcpdservice:name:dhcpdstate:restarted(3)某企业自动化运维工程师负责管理一个服务器集群,现在需要在某个服务器上部署DNS服务,以实现企业内网域名解析。使用AnsiblePlaybook实现自动化安装和配置DNS服务,在配置文件中添加本地域名解析信息,将www.opencloud.fun解析到内网00,配置DNS安全选项,禁用DNS劫持功能。----name:InstallandconfigureDNShosts:dns_serverbecome:truetasks:-name:InstallDNSpackageyum:name:bindstate:present-name:Configurenamed.conflineinfile:path:/etc/named.confline:|options{//DNSSecurityOptionsdnssec-enableyes;dnssec-validationauto;//DisableDNSHijackinghijack-dnssecno;hijack-whoisno;hijack-synthesizedno;}zone"opencloud.fun"IN{typemaster;file"/var/named/opencloud.fun.zone";}notify:RestartDNSservice-name:Configurezonefilecopy:content:|$ORIGINopencloud.fun.$TTL1D@INSOAns1.opencloud.fun.admin.opencloud.fun.(2024051401;Serial1D;Refresh1H;Retry1W;Expire3H);MinimumTTLINNSns1.opencloud.fun.wwwINA00dest:/var/named/opencloud.fun.zonenotify:RestartDNSservicehandlers:-name:RestartDNSserviceservice:name:namedstate:restarted(4)某企业自动化运维工程师负责管理一个服务器集群,现在需要在某个服务器上部署FTP服务,vsftpd(VerySecureFileTransferProtocolDeamen)是一个基于FTP协议的开源FTP服务器软件。使用AnsiblePlaybook实现自动化安装和配置vsftpd服务,配置vsftpd虚拟用户,并设置虚拟用户的上传和下载权限,确保vsftpd服务已经启动并运行。----name:Installandconfigurevsftpdhosts:ftp_serverbecome:truetasks:-name:Installvsftpdpackageyum:name:vsftpdstate:present-name:Configurevsftpd.conflineinfile:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论