城市直播房产教育博客汽车
快传网
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

100个LinuxShell脚本经典案例

9月13日 无镇楼投稿
  给大家分享100个LinuxShell脚本经典案例,另外本篇文档也已经整理成pdf,易失效,请及时保存链接:https:pan。baidu。coms1H8RhYJJWWeoLPd7WUaTi0A?pwdnawp
  提取码:nawp
  1、编写helloworld脚本!binbash编写helloworld脚本echoHelloWorld!
  2、通过位置变量创建Linux系统账户及密码!binbash通过位置变量创建Linux系统账户及密码1是执行脚本的第一个参数,2是执行脚本的第二个参数useradd1echo2passwdstdin1
  3、备份日志!binbash每周5使用tar命令备份varlog下的所有日志文件vimrootlogbak。sh编写备份脚本,备份后的文件名包含日期标签,防止后面的备份将前面的备份数据覆盖注意date命令需要使用反引号括起来,反引号在键盘tab键上面tarczflogdateYmd。tar。gzvarlogcrontabe编写计划任务,执行备份脚本00035rootlogbak。sh
  4、一键部署LNMP(RPM包版本)!binbash一键部署LNMP(RPM包版本)使用yum安装部署LNMP,需要提前配置好yum源,否则该脚本会失败本脚本使用于centos7。2或RHEL7。2yumyinstallhttpdyumyinstallmariadbmariadbdevelmariadbserveryumyinstallphpphpmysqlsystemctlstarthttpdmariadbsystemctlenablehttpdmariadb
  5、监控内存和磁盘容量,小于给定值时报警!binbash实时监控本机内存和硬盘剩余空间,剩余内存小于500M、根分区剩余空间小于1000M时,发送报警邮件给root管理员提取根分区剩余空间disksize(dfawk{print4})提取内存剩余空间memsize(freeawkMem{print4})while:do注意内存和磁盘提取的空间大小都是以Kb为单位if〔disksizele512000amemsizele1024000〕thenmailsWarningrootEOFInsufficientresources,资源不足EOFfidone
  6、猜数字游戏!binbash脚本生成一个100以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,猜小了或猜大了,直至用户猜对脚本结束。RANDOM为系统自带的系统变量,值为032767的随机数使用取余算法将随机数变为1100的随机数num〔RANDOM1001〕echonum使用read提示用户猜数字使用if判断用户猜数字的大小关系:eq(等于),ne(不等于),gt(大于),ge(大于等于),lt(小于),le(小于等于)while:doreadp计算机生成了一个1100的随机数,你猜:caiif〔caieqnum〕thenecho恭喜,猜对了exitelif〔caigtnum〕thenechoOops,猜大了elseechoOops,猜小了fidone
  7、检测本机当前用户是否为超级管理员,如果是管理员,则使用yum安装vsftpd,如果不是,则提示您非管理员(使用字串对比版本)!binbash检测本机当前用户是否为超级管理员,如果是管理员,则使用yum安装vsftpd,如果不是,则提示您非管理员(使用字串对比版本)if〔USERroot〕thenyumyinstallvsftpdelseecho您不是管理员,没有权限安装软件fi
  8、检测本机当前用户是否为超级管理员,如果是管理员,则使用yum安装vsftpd,如果不是,则提示您非管理员(使用UID数字对比版本)!binbash检测本机当前用户是否为超级管理员,如果是管理员,则使用yum安装vsftpd,如果不是,则提示您非管理员(使用UID数字对比版本)if〔UIDeq0〕;thenyumyinstallvsftpdelseecho您不是管理员,没有权限安装软件fi
  9、编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默认的123456作为默认密码。!binbash编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默认的123456作为默认密码。readp请输入用户名:user使用z可以判断一个变量是否为空,如果为空,提示用户必须输入账户名,并退出脚本,退出码为2没有输入用户名脚本退出后,使用?查看的返回码为2if〔zuser〕;thenecho您不需输入账户名exit2fi使用sttyecho关闭shell的回显功能使用sttyecho打开shell的回显功能sttyechoreadp请输入密码:passsttyechopass{pass:123456}useradduserechopasspasswdstdinuser
  10、输入三个数并进行升序排序!binbash依次提示用户输入3个整数,脚本根据数字大小依次排序输出3个数字readp请输入一个整数:num1readp请输入一个整数:num2readp请输入一个整数:num3不管谁大谁小,最后都打印echonum1,num2,num3num1中永远存最小的值,num2中永远存中间值,num3永远存最大值如果输入的不是这样的顺序,则改变数的存储顺序,如:可以将num1和num2的值对调tmp0如果num1大于num2,就把num1和和num2的值对调,确保num1变量中存的是最小值if〔num1gtnum2〕;thentmpnum1num1num2num2tmpfi如果num1大于num3,就把num1和num3对调,确保num1变量中存的是最小值if〔num1gtnum3〕;thentmpnum1num1num3num3tmpfi如果num2大于num3,就把num2和num3对标,确保num2变量中存的是小一点的值if〔num2gtnum3〕;thentmpnum2num2num3num3tmpfiecho排序后数据(从小到大)为:num1,num2,num3
  11、石头、剪刀、布游戏!binbash编写脚本,实现人机石头,剪刀,布ahrefhttps:www。q578。coml60targetblankclassinfotextkey游戏agame(石头剪刀布)num〔RANDOM3〕computer{game〔num〕}通过随机数获取计算机的出拳出拳的可能性保存在一个数组中,game〔0〕,game〔1〕,game〔2〕分别是3中不同的可能echo请根据下列提示选择您的出拳手势echo1。石头echo2。剪刀echo3。布readp请选择13:personcasepersonin1)if〔numeq0〕thenecho平局elif〔numeq1〕thenecho你赢elseecho计算机赢;2)if〔numeq0〕thenecho计算机赢elif〔numeq1〕thenecho平局elseecho你赢;3)if〔numeq0〕thenecho你赢elif〔numeq1〕thenecho计算机赢elseecho平局;)echo必须输入13的数字esac
  12、编写脚本测试192。168。4。024整个网段中哪些主机处于开机状态,哪些主机处于关机状态(for版本)!binbash编写脚本测试192。168。4。024整个网段中哪些主机处于开机状态,哪些主机处于关机状态(for版本)foriin{1。。254}do每隔0。3秒ping一次,一共ping2次,并以1毫秒为单位设置ping的超时时间pingc2i0。3W1192。168。4。idevnullif〔?eq0〕;thenecho192。168。4。iisupelseecho192。168。4。iisdownfidone
  13、编写脚本测试192。168。4。024整个网段中哪些主机处于开机状态,哪些主机处于关机状态(while版本)!binbash编写脚本测试192。168。4。024整个网段中哪些主机处于开机状态,哪些主机处于关机状态(while版本)i1while〔ile254〕dopingc2i0。3W1192。168。4。idevnullif〔?eq0〕;thenecho192。168。4。iisupelseecho192。168。4。iisdownfiletidone
  14、编写脚本测试192。168。4。024整个网段中哪些主机处于开机状态,哪些主机处于关机状态(多进程版)!binbash编写脚本测试192。168。4。024整个网段中哪些主机处于开机状态,哪些主机处于关机状态(多进程版)定义一个函数,ping某一台主机,并检测主机的存活状态myping(){pingc2i0。3W11devnullif〔?eq0〕;thenecho1isupelseecho1isdownfi}foriin{1。。254}domyping192。168。4。idone使用符号,将执行的函数放入后台执行这样做的好处是不需要等待ping第一台主机的回应,就可以继续并发ping第二台主机,依次类推。
  15、编写脚本,显示进度条!binbash编写脚本,显示进度条jindu(){while:doechonsleep0。2done}jinducpa12killall0echo拷贝完成
  16、进度条,动态时针版本;定义一个显示进度的函数,屏幕快速显示!binbash进度条,动态时针版本定义一个显示进度的函数,屏幕快速显示rotateline(){INTERVAL0。5设置间隔时间COUNT0设置4个形状的编号,默认编号为0(不代表任何图像)while:doCOUNTexprCOUNT1执行循环,COUNT每次循环加1,(分别代表4种不同的形状)caseCOUNTin判断COUNT的值,值不一样显示的形状就不一样1)值为1显示echoebcsleepINTERVAL;;2)值为2显示,第一个是转义echoebcsleepINTERVAL;;3)值为3显示echoebcsleepINTERVAL;;4)值为4显示echoebcsleepINTERVAL;;)值为其他时,将COUNT重置为0COUNT0;;esacdone}rotateline
  17、99乘法表!binbash99乘法表(编写shell脚本,打印99乘法表)foriinseq9doforjinseqidoechonji〔ij〕doneechodone
  18、使用死循环实时显示eth0网卡发送的数据包流量!binbash使用死循环实时显示eth0网卡发送的数据包流量while:doecho本地网卡eth0流量信息如下:ifconfigeth0grepRXpackawk{print5}ifconfigeth0grepTXpackawk{print5}sleep1done
  19、使用user。txt文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码本脚本执行,需要提前准备一个user。txt文件,该文件中包含有若干用户名信息!binbash使用user。txt文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码本脚本执行,需要提前准备一个user。txt文件,该文件中包含有若干用户名信息foriincatuser。txtdouseraddiecho123456passwdstdinidone
  20、编写批量修改扩展名脚本!binbash编写批量修改扩展名脚本,如批量将txt文件修改为doc文件执行脚本时,需要给脚本添加位置参数脚本名txtdoc(可以将txt的扩展名修改为doc)脚本名docjpg(可以将doc的扩展名修改为jpg)foriinls。1domvi{i。}。2done
  21、使用expect工具自动交互密码远程其他主机安装httpd软件!binbash使用expect工具自动交互密码远程其他主机安装httpd软件删除。sshknownhosts后,ssh远程任何主机都会询问是否确认要连接该主机rmrf。sshknownhostsexpectEOFspawnssh192。168。4。254expectyesno{sendyesr}根据自己的实际情况将密码修改为真实的密码字串expectpassword{send密码r}expect{sendyumyinstallhttpdr}expect{sendexitr}EOF
  22、一键部署LNMP(源码安装版本)!binbash一键部署LNMP(源码安装版本)menu(){clearechoMenuecho1。InstallNginxecho2。InstallMySQLecho3。InstallPHPecho4。ExitProgramecho}choice(){readpPleasechoiceamenu〔19〕:select}installnginx(){idnginxdevnullif〔?ne0〕;thenuseraddssbinnologinnginxfiif〔fnginx1。8。0。tar。gz〕;thentarxfnginx1。8。0。tar。gzcdnginx1。8。0yumyinstallgccpcredevelopenssldevelzlibdevelmake。configureprefixusrlocalnginxwithhttpsslmodulemakemakeinstalllnsusrlocalnginxsbinnginxusrsbincd。。elseecho没有Nginx源码包fi}installmysql(){yumyinstallgccgccccmakencursesdevelperlidmysqldevnullif〔?ne0〕;thenuseraddssbinnologinmysqlfiif〔fmysql5。6。25。tar。gz〕;thentarxfmysql5。6。25。tar。gzcdmysql5。6。25cmake。makemakeinstallusrlocalmysqlscriptsmysqlinstalldbusermysqldatadirusrlocalmysqldatabasedirusrlocalmysqlchownRroot。mysqlusrlocalmysqlchownRmysqlusrlocalmysqldatabincpfusrlocalmysqlsupportfilesmysql。serveretcinit。dmysqldchmodxetcinit。dmysqldbincpfusrlocalmysqlsupportfilesmydefault。cnfetcmy。cnfechousrlocalmysqllibetcld。so。confldconfigechoPATHPATH:usrlocalmysqlbinetcprofileexportPATHelseecho没有mysql源码包exitfi}installphp(){安装php时没有指定启动哪些模块功能,如果的用户可以根据实际情况自行添加额外功能如withgd等yumyinstallgcclibxml2develif〔fmhash0。9。9。9。tar。gz〕;thentarxfmhash0。9。9。9。tar。gzcdmhash0。9。9。9。configuremakemakeinstallcd。。if〔!fusrliblibmhash。so〕;thenlnsusrlocalliblibmhash。sousrlibfildconfigelseecho没有mhash源码包文件exitfiif〔flibmcrypt2。5。8。tar。gz〕;thentarxflibmcrypt2。5。8。tar。gzcdlibmcrypt2。5。8。configuremakemakeinstallcd。。if〔!fusrliblibmcrypt。so〕;thenlnsusrlocalliblibmcrypt。sousrlibfildconfigelseecho没有libmcrypt源码包文件exitfiif〔fphp5。4。24。tar。gz〕;thentarxfphp5。4。24。tar。gzcdphp5。4。24。configureprefixusrlocalphp5withmysqlusrlocalmysqlenablefpmenablembstringwithmcryptwithmhashwithconfigfilepathusrlocalphp5etcwithmysqliusrlocalmysqlbinmysqlconfigmakemakeinstallbincpfphp。iniproductionusrlocalphp5etcphp。inibincpfusrlocalphp5etcphpfpm。conf。defaultusrlocalphp5etcphpfpm。confcd。。elseecho没有php源码包文件exitfi}while:domenuchoicecaseselectin1);2);3);4);)echoSorry!esacdone
  23、编写脚本快速克隆KVM虚拟机!binbash编写脚本快速克隆KVM虚拟机本脚本针对RHEL7。2或Centos7。2本脚本需要提前准备一个qcow2格式的虚拟机模板,名称为varliblibvirtimages。rh7template的虚拟机模板该脚本使用qemuimg命令快速创建快照虚拟机脚本使用sed修改模板虚拟机的配置文件,将虚拟机名称、UUID、磁盘文件名、MAC地址exitcode:65userinputnothing66userinputisnotanumber67userinputoutofrange68vmdiskimageexistsIMGDIRvarliblibvirtimagesBASEVMrh7templatereadpEnterVMnumber:VMNUMif〔VMNUMle9〕;thenVMNUM0VMNUMfiif〔z{VMNUM}〕;thenechoYoumustinputanumber。exit65elif〔〔{VMNUM}〔az〕〕;thenechoYoumustinputanumber。exit66elif〔{VMNUM}lt1o{VMNUM}gt99〕;thenechoInputoutofrangeexit67fiNEWVMrh7node{VMNUM}if〔eIMGDIR{NEWVM}。img〕;thenechoFileexists。exit68fiechoenCreatingVirtualMachinediskimage。。。。。。qemuimgcreatefqcow2bIMGDIR。{BASEVM}。imgIMGDIR{NEWVM}。imgdevnullechoee〔32;1m〔OK〕e〔0mvirshdumpxml{BASEVM}tmpmyvm。xmlcatvarliblibvirtimages。rhel7。xmltmpmyvm。xmlsediname{BASEVM}s{BASEVM}{NEWVM}tmpmyvm。xmlsediuuidsuuid。uuiduuid(uuidgen)uuidtmpmyvm。xmlsedi{BASEVM}。imgs{BASEVM}{NEWVM}tmpmyvm。xml修改MAC地址,本例使用的是常量,每位使用该脚本的用户需要根据实际情况修改这些值最好这里可以使用便利,这样更适合于批量操作,可以克隆更多虚拟机sedimacsa10ctmpmyvm。xmlechoenDefiningnewvirtualmachine。。。。。。virshdefinetmpmyvm。xmldevnullechoee〔32;1m〔OK〕e〔0m
  24、点名器脚本!binbash编写一个点名器脚本该脚本,需要提前准备一个user。txt文件该文件中需要包含所有姓名的信息,一行一个姓名,脚本每次随机显示一个姓名while:do统计user文件中有多少用户linecatuser。txtwclnum〔RANDOMline1〕sedn{num}puser。txtsleep0。2cleardone
  25、查看有多少远程的IP在连接本机!binbash查看有多少远程的IP在连接本机(不管是通过ssh还是web还是ftp都统计)使用netstatatn可以查看本机所有连接的状态,a查看所有,t仅显示tcp连接的信息,n数字格式显示LocalAddress(第四列是本机的IP和端口信息)ForeignAddress(第五列是远程主机的IP和端口信息)使用awk命令仅显示第5列数据,再显示第1列IP地址的信息sort可以按数字大小排序,最后使用uniq将多余重复的删除,并统计重复的次数netstatatnawk{print5}awk{print1}sortnruniqc
  26、对100以内的所有正整数相加求和(1234。。。100)!binbash对100以内的所有正整数相加求和(1234。。。100)seq100可以快速自动生成100个整数sum0foriinseq100dosum〔sumi〕doneecho总和是:sum
  27、统计13:30到14:30所有访问apache服务器的请求有多少个!binbash统计13:30到14:30所有访问apache服务器的请求有多少个awk使用F选项指定文件内容的分隔符是或者:条件判断7:8大于等于13:30,并且要求,7:8小于等于14:30最后使用wcl统计这样的数据有多少行,即多少个awkF〔:〕7:813:307:814:30varloghttpdaccesslogwcl
  28、统计13:30到14:30所有访问本机Aapche服务器的远程IP地址是什么!binbash统计13:30到14:30所有访问本机Aapche服务器的远程IP地址是什么awk使用F选项指定文件内容的分隔符是或者:条件判断7:8大于等于13:30,并且要求,7:8小于等于14:30日志文档内容里面,第1列是远程主机的IP地址,使用awk单独显示第1列即可awkF〔:〕7:813:307:814:30{print1}varloghttpdaccesslog
  29、打印国际象棋棋盘!binbash打印国际象棋棋盘设置两个变量,i和j,一个代表行,一个代表列,国际象棋为88棋盘i1是代表准备打印第一行棋盘,第1行棋盘有灰色和蓝色间隔输出,总共为8列i1,j1代表第1行的第1列;i2,j3代表第2行的第3列棋盘的规律是ij如果是偶数,就打印蓝色色块,如果是奇数就打印灰色色块使用echone打印色块,并且打印完成色块后不自动换行,在同一行继续输出其他色块foriin{1。。8}doforjin{1。。8}dosum〔ij〕if〔〔sum2〕eq0〕;thenechone33〔46m33〔0melseechone33〔47m33〔0mfidoneechodone
  30、统计每个远程IP访问了本机apache几次?!binbash统计每个远程IP访问了本机apache几次?awk{ip〔1〕}END{for(iinip){printip〔i〕,i}}varloghttpdaccesslog
  31、统计当前Linux系统中可以登录计算机的账户有多少个!binbash统计当前Linux系统中可以登录计算机的账户有多少个方法1:grepbash34;etcpasswdwcl方法2:awkf:bash{x}end{printx}etcpasswd
  32、统计varlog有多少个文件,并显示这些文件名!binbash统计varlog有多少个文件,并显示这些文件名使用ls递归显示所有,再判断是否为文件,如果是文件则计数器加1cdvarlogsum0foriinlsrdoif〔fi〕;thenletsumecho文件名:ifidoneecho总文件数量为:sum
  33、自动为其他脚本添加解释器信息
  DockerK8sJenkins主流技术全解视频资料【干货免费分享】!binbash自动为其他脚本添加解释器信息!binbash,如脚本名为test。sh则效果如下:。test。shabc。sh自动为abc。sh添加解释器信息。test。shuser。sh自动为user。sh添加解释器信息先使用grep判断对象脚本是否已经有解释器信息,如果没有则使用sed添加解释器以及描述信息if!grepq!1;thensed1i!binbash1sed2iDescription:fi因为每个脚本的功能不同,作用不同,所以在给对象脚本添加完解释器信息,以及Description后还希望继续编辑具体的脚本功能的描述信息,这里直接使用vim把对象脚本打开,并且光标跳转到该文件的第2行vim21
  34、自动化部署varnish源码包软件!binbash自动化部署varnish源码包软件本脚本需要提前下载varnish3。0。6。tar。gz这样一个源码包软件,该脚本即可用自动源码安装部署软件yumyinstallgccreadlinedevelpcredeveluseraddssbinnologinvarnishtarxfvarnish3。0。6。tar。gzcdvarnish3。0。6使用configure,make,makeinstall源码安装软件包。configureprefixusrlocalvarnishmakemakeinstall在源码包目录下,将相应的配置文件拷贝到Linux系统文件系统中默认安装完成后,不会自动拷贝或安装配置文件到Linux系统,所以需要手动cp复制配置文件并使用uuidgen生成一个随机密钥的配置文件cpredhatvarnish。initrcetcinit。dvarnishcpredhatvarnish。sysconfigetcsysconfigvarnishcpredhatvarnishreloadvclusrbinlnsusrlocalvarnishsbinvarnishdusrsbinlnsusrlocalvarnishbinusrbinmkdiretcvarnishcpusrlocalvarnishetcvarnishdefault。vcletcvarnishuuidgenetcvarnishsecret
  35、编写nginx启动脚本!binbash编写nginx启动脚本本脚本编写完成后,放置在etcinit。d目录下,就可以被Linux系统自动识别到该脚本如果本脚本名为etcinit。dnginx,则servicenginxstart就可以启动该服务servicenginxstop就可以关闭服务servicenginxrestart可以重启服务servicenginxstatus可以查看服务状态programusrlocalnginxsbinnginxpidusrlocalnginxlogsnginx。pidstart(){if〔fpid〕;thenechonginx服务已经处于开启状态elseprogramfistop(){if〔!fpid〕;thenechonginx服务已经关闭elseprogramsstopecho关闭服务okfi}status(){if〔fpid〕;thenecho服务正在运行。。。elseecho服务已经关闭fi}case1instart);stop);restart)stopsleep1;status);)echo你输入的语法格式错误esac
  36、自动对磁盘分区、格式化、挂载!binbash自动对磁盘分区、格式化、挂载对虚拟机的vdb磁盘进行分区格式化,使用将需要的分区指令导入给程序fdiskn(新建分区),p(创建主分区),1(分区编号为1),两个空白行(两个回车,相当于将整个磁盘分一个区)注意:1后面的两个回车(空白行)是必须的!fdiskdevvdbEOFnp1wqEOF格式化刚刚创建好的分区mkfs。xfsdevvdb1创建挂载点目录if〔edata〕;thenexitfimkdirdata自动挂载刚刚创建的分区,并设置开机自动挂载该分区echodevvdb1dataxfsdefaults12etcfstabmounta
  37、自动优化Linux内核参数!binbash自动优化Linux内核参数脚本针对RHEL7catusrlibsysctl。d00system。confEOFfs。filemax65535net。ipv4。tcptimestamps0net。ipv4。tcpsynackretries5net。ipv4。tcpsynretries5net。ipv4。tcptwrecycle1net。ipv4。tcptwreuse1net。ipv4。tcpfintimeout30net。ipv4。tcpkeepalivetime120net。ipv4。iplocalportrange102465535kernel。shmall2097152kernel。shmmax2147483648kernel。shmmni4096kernel。sem50106412805010128net。core。wmemdefault262144net。core。wmemmax262144net。core。rmemdefault4194304net。core。rmemmax4194304net。ipv4。tcpfintimeout10net。ipv4。tcpkeepalivetime30net。ipv4。tcpwindowscaling0net。ipv4。tcpsack0EOFsysctlp
  38、切割Nginx日志文件(防止单个文件过大,后期处理很困难)mkdirdatascriptsvimdatascriptsnginxlog。sh!binbash切割Nginx日志文件(防止单个文件过大,后期处理很困难)logspathusrlocalnginxlogsmv{logspath}access。log{logspath}access(datedyesterdayYmd)。logkillUSR1catusrlocalnginxlogsnginx。pidchmodxdatascriptsnginxlog。shcrontabe脚本写完后,将脚本放入计划任务每天执行一次脚本01datascriptsnginxlog。sh
  39、检测MySQL数据库连接数量!binbash检测MySQL数据库连接数量本脚本每2秒检测一次MySQL并发连接数,可以将本脚本设置为开机启动脚本,或在特定时间段执行以满足对MySQL数据库的监控需求,查看MySQL连接是否正常本案例中的用户名和密码需要根据实际情况修改后方可使用logfilevarlogmysqlcount。loguserrootpasswd123456while:dosleep2countmysqladminuuserppasswdstatusawk{print4}echodateYmd并发连接数为:countlogfiledone
  40、根据md5校验码,检测文件是否被修改!binbash根据md5校验码,检测文件是否被修改本示例脚本检测的是etc目录下所有的conf结尾的文件,根据实际情况,您可以修改为其他目录或文件本脚本在目标数据没有被修改时执行一次,当怀疑数据被人篡改,再执行一次将两次执行的结果做对比,MD5码发生改变的文件,就是被人篡改的文件foriin(lsetc。conf)domd5sumivarlogconffile。logdone
  41、检测MySQL服务是否存活!binbash检测MySQL服务是否存活host为你需要检测的MySQL主机的IP地址,user为MySQL账户名,passwd为密码这些信息需要根据实际情况修改后方可使用host192。168。51。198userrootpasswd123456mysqladminhhostuuserppasswdpingdevnullif〔?eq0〕thenechoMySQLisUPelseechoMySQLisdownfi
  42、备份MySQL的shell脚本(mysqldump版本)!binbash备份MySQL的shell脚本(mysqldump版本)定义变量user(数据库用户名),passwd(数据库密码),date(备份的时间标签)dbname(需要备份的数据库名称,根据实际需求需要修改该变量的值,默认备份mysql数据库)userrootpasswd123456dbnamemysqldate(dateYmd)测试备份目录是否存在,不存在则自动创建该目录〔!dmysqlbackup〕mkdirmysqlbackup使用mysqldump命令备份数据库mysqldumpuuserppasswddbnamemysqlbackupdbname{date}。sql
  43、将文件中所有的小写字母转换为大写字母!binbash将文件中所有的小写字母转换为大写字母1是位置参数,是你需要转换大小写字母的文件名称执行脚本,给定一个文件名作为参数,脚本就会将该文件中所有的小写字母转换为大写字母tr〔az〕〔AZ〕1
  44、非交互自动生成SSH密钥文件!binbash非交互自动生成SSH密钥文件t指定SSH密钥的算法为RSA算法;N设置密钥的密码为空;f指定生成的密钥文件存放在哪里rmrf。ssh{knownhosts,idrsa}sshkeygentRSANf。sshidrsa
  45、检查特定的软件包是否已经安装!binbash检查特定的软件包是否已经安装if〔eq0〕;thenecho你需要制定一个软件包名称作为脚本参数echo用法:0软件包名称。。。fi提取所有的位置变量的值,相当于forpackageindoifrpmq{package}thenechoe{package}33〔32m已经安装33〔0melseechoe{package}33〔34;1m未安装33〔0mfidone
  46、监控HTTP服务器的状态(测试返回码)!binbash监控HTTP服务器的状态(测试返回码)设置变量,url为你需要检测的目标网站的网址(IP或域名),比如百度urlhttp:http:183。232。231。172index。html定义函数checkhttp:使用curl命令检查http服务器的状态m设置curl不管访问成功或失败,最大消耗的时间为5秒,5秒连接服务为相应则视为无法连接s设置静默连接,不显示连接时的连接速度、时间消耗等信息o将curl下载的页面内容导出到devnull(默认会在屏幕显示页面内容)w设置curl命令需要显示的内容{httpcode},指定curl返回服务器的状态码checkhttp(){statuscode(curlm5sodevnullw{httpcode}url)}while:docheckhttpdate(dateYmdH:M:S)生成报警邮件的内容echo当前时间为:dateurl服务器异常,状态码为{statuscode}。请尽快排查异常。tmphttp。pid指定测试服务器状态的函数,并根据返回码决定是发送邮件报警还是将正常信息写入日志if〔statuscodene200〕;thenmailsWarningroottmphttp。pidelseechourl连接正常varloghttp。logfisleep5done
  47、自动添加防火墙规则,开启某些服务或端口(适用于RHEL7)!binbash自动添加防火墙规则,开启某些服务或端口(适用于RHEL7)设置变量定义需要添加到防火墙规则的服务和端口号使用firewallcmdgetservices可以查看firewall支持哪些服务servicenfshttpsshport80228080循环将每个服务添加到防火墙规则中foriinservicedoechoAddingiservicetofirewallfirewallcmdaddservice{i}done循环将每个端口添加到防火墙规则中foriinportdoechoAddingiPorttofirewallfirewallcmdaddport{i}tcpdone将以上设置的临时防火墙规则,转换为永久有效的规则(确保重启后有效)firewallcmdruntimetopermanent
  48、使用脚本自动创建逻辑卷!binbash使用脚本自动创建逻辑卷清屏,显示警告信息,创建将磁盘转换为逻辑卷会删除数据clearechoe33〔32m!!!!!!警告(Warning)!!!!!!33〔0mechoechoecho脚本会将整个磁盘转换为PV,并删除磁盘上所有数据!!!echoThisScriptwilldestroyalldataontheDiskechoechoreadp请问是否继续yn?:sure测试用户输入的是否为y,如果不是则退出脚本〔sure!y〕exit提示用户输入相关参数(磁盘、卷组名称等数据),并测试用户是否输入了这些值,如果没有输入,则脚本退出readp请输入磁盘名称,如devvdb:disk〔zdisk〕echo没有输入磁盘名称exitreadp请输入卷组名称:vgname〔zvgname〕echo没有输入卷组名称exitreadp请输入逻辑卷名称:lvname〔zlvname〕echo没有输入逻辑卷名称exitreadp请输入逻辑卷大小:lvsize〔zlvsize〕echo没有输入逻辑卷大小exit使用命令创建逻辑卷pvcreatediskvgcreatevgnamedisklvcreateL{lvsize}Mn{lvname}{vgname}
  49、显示CPU厂商信息!binbash显示CPU厂商信息awkvendorid{print3}proccpuinfouniq
  50、删除某个目录下大小为0的文件!binbash删除某个目录下大小为0的文件varwwwhtml为测试目录,脚本会清空该目录下所有0字节的文件dirvarwwwhtmlfinddirtypefsize0execrmrf{};
  51、查找Linux系统中的僵尸进程!binbash查找Linux系统中的僵尸进程awk判断ps命令输出的第8列为Z是,显示该进程的PID和进程命令psauxawk{if(8Z){print2,11}}
  52、提示用户输入年份后判断该年是否为闰年!binbash提示用户输入年份后判断该年是否为闰年能被4整除并且并不能被100整除的年份是闰年能被400整除的年份也是闰年readp请输入一个年份:yearif〔year〕;thenecho没有输入年份exitfi使用正则测试变量year中是否包含大小写字母if〔〔year〔aZ〕〕〕;thenecho你输入的不是数字exitfi判断是否为闰年if〔〔year4〕eq0〕〔〔year100〕ne0〕;thenechoyear年是闰年elif〔〔year400〕eq0〕;thenechoyear年是闰年elseechoyear年不是闰年fi
  53、生成随机密码(urandom版本)!binbash生成随机密码(urandom版本)devurandom文件是Linux内置的随机设备文件catdevurandom可以看看里面的内容,ctrlc退出查看查看该文件内容后,发现内容有些太随机,包括很多特殊符号,我们需要的密码不希望使用这些符号trdcAZaz09devurandom该命令可以将随机文件中其他的字符删除,仅保留大小写字母,数字,下划线,但是内容还是太多我们可以继续将优化好的内容通过管道传递给head命令,在大量数据中仅显示头10个字节注意A前面有个下划线trdcAZaz09devurandomheadc10
  54、生成随机密码(字串截取版本)!binbash生成随机密码(字串截取版本)设置变量key,存储密码的所有可能性(密码库),如果还需要其他字符请自行添加其他密码字符使用统计密码库的长度key0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZnum{key}设置初始密码为空pass循环8次,生成随机密码每次都是随机数对密码库的长度取余,确保提取的密码字符不超过密码库的长度每次循环提取一位随机密码,并将该随机密码追加到pass变量的最后foriin{1。。8}doindex〔RANDOMnum〕passpass{key:index:1}doneechopass
  55、生成随机密码(UUID版本,16进制密码)!binbash生成随机密码(UUID版本,16进制密码)uuidgen56、生成随机密码(进程ID版本,数字密码)!binbash生成随机密码(进程ID版本,数字密码)echo
  57、测试用户名与密码是否正确!binbash测试用户名与密码是否正确用户名为tom并且密码为123456,则提示登录成功,否则提示登录失败readp请输入用户名:userreadp请输入密码:passif〔usertomapass123456〕;thenechoLoginsuccessfulelseechoLoginFailedfi
  58、循环测试用户名与密码是否正确!binbash循环测试用户名与密码是否正确循环测试用户的账户名和密码,最大测试3次,输入正确提示登录成功,否则提示登录失败用户名为tom并且密码为123456foriin{1。。3}doreadp请输入用户名:userreadp请输入密码:passif〔usertomapass123456〕;thenechoLoginsuccessfulexitfidoneechoLoginFailed
  59、Shell脚本的fork炸弹!binbashShell脚本的fork炸弹快速消耗计算机资源,致使计算机死机定义函数名为。(点),函数中递归调用自己并放入后台执行。(){。。};。
  60、批量下载有序文件(pdf、图片、视频等等)!binbash批量下载有序文件(pdf、图片、视频等等)本脚本准备有序的网络资料进行批量下载操作(如01。jpg,02。jpg,03。jpg)设置资源来源的域名连接urlhttp:www。baidu。comecho开始下载。。。sleep2typejpgforiinseq100echo正在下载i。typecurlurli。typeotmp{i}typesleep1donecurl使用o选项指定下载文件另存到哪里。
  61、显示当前计算机中所有账户的用户名称!binbash显示当前计算机中所有账户的用户名称下面使用3种不同的方式列出计算机中所有账户的用户名指定以:为分隔符,打印etcpasswd文件的第1列awkF:{print1}etcpasswd指定以:为分隔符,打印etcpasswd文件的第1列cutd:f1etcpasswd使用sed的替换功能,将etcpasswd文件中:后面的所有内容替换为空(仅显示用户名)seds:。etcpasswd
  62、制定目录路径,脚本自动将该目录使用tar命令打包备份到data目录!binbash制定目录路径,脚本自动将该目录使用tar命令打包备份到data目录〔!ddata〕mkdirdata〔z1〕exitif〔d1〕;thentarczfdata1。dateYmd。tar。gz1elseecho该目录不存在fi
  63、显示进度条(回旋镖版)!binbash显示进度条(回旋镖版)while:doclearforiin{1。。20}doechoe33〔3;{i}Hsleep0。1doneclearforiin{20。。1}doechoe33〔3;{i}Hsleep0。1donecleardone
  64、安装LAMP环境(yum版本)!binbash安装LAMP环境(yum版本)本脚本适用于RHEL7(RHEL6中数据库为mysql)yummakecachedevnullnum(yumrepolistawkrepolist{print2}seds,)if〔numlt0〕;thenyumyinstallhttpdyumyinstallmariadbmariadbservermariadbdevelyumyinstallphpphpmysqlelseecho未配置yum源。。。fi
  65、循环关闭局域网中所有主机!binbash循环关闭局域网中所有主机假设本机为192。168。4。100,编写脚本关闭除自己外的其他所有主机脚本执行,需要提前给所有其他主机传递ssh密钥,满足无密码连接foriin{1。。254}do〔ieq100〕continueecho正在关闭192。168。4。i。。。ssh192。168。4。ipoweroffdone
  66、获取本机MAC地址!binbash获取本机MAC地址ipasawkBEGIN{print本机MAC地址信息如下:}〔09〕{print2;if(0linkether){print2}}grepvlo:awk读取ip命令的输出,输出结果中如果有以数字开始的行,先显示该行的地2列(网卡名称),接着使用getline再读取它的下一行数据,判断是否包含linkether如果保护该关键词,就显示该行的第2列(MAC地址)lo回环设备没有MAC,因此将其屏蔽,不显示
  67、自动配置rsynd服务器的配置文件rsyncd。conf!binbash自动配置rsynd服务器的配置文件rsyncd。confSeersyncd。confmanpageformoreoptions。〔!dhomeftp〕mkdirhomeftpechouidnobodygidnobodyusechrootyesmaxconnections4pidfilevarrunrsyncd。pidexcludelostfoundtransferloggingyestimeout900ignorenonreadableyesdontcompress。gz。tgz。zip。z。Z。rpm。deb。bz2〔ftp〕pathhomeftpcommentshareetcrsyncd。conf
  68、修改Linux系统的最大打开文件数量!binbash修改Linux系统的最大打开文件数量往etcsecuritylimits。conf文件的末尾追加两行配置参数,修改最大打开文件数量为65536catetcsecuritylimits。confEOFsoftnofile65536hardnofile65536EOF
  69、设置Python支持自动命令补齐功能!binbash设置Python支持自动命令补齐功能Summary:EnabletabcompleteforpythonDescription:Needsimportreadlineandrlcompletermoduleimportreadlineimportrlcompleterhelp(rlcompleter)displaydetail:readline。parseandbind(tab:complete)manpythondisplaydetail:PYTHONSTARTUPvariableif〔!fusrbintab。py〕;thencatusrbintab。pyEOFimportreadlineimportrlcompleterreadline。parseandbind(tab:complete)EOFfisediaexportPYTHONSTARTUPusrbintab。pyetcprofilesourceetcprofile
  70、自动修改计划任务配置文件
  DockerK8sJenkins主流技术全解视频资料【干货免费分享】!binbash自动修改计划任务配置文件readp请输入分钟信息(0059):minreadp请输入小时信息(0024):hourreadp请输入日期信息(0131):datereadp请输入月份信息(0112):monthreadp请输入星期信息(0006):weakreadp请输入计划任务需要执行的命令或脚本:programechominhourdatemonthweakprogrametccrontab
  71、使用脚本循环创建三位数字的文本文件(111999的文件)!binbash使用脚本循环创建三位数字的文本文件(111999的文件)foriin{1。。9}doforjin{1。。9}doforkin{1。。9}dotouchtmpijk。txtdonedonedone
  72、找出etcpasswd中能登录的用户,并将对应在etcshadow中第二列密码提出处理!binbash找出etcpasswd中能登录的用户,并将对应在etcshadow中第二列密码提出处理user(awkF:bash{print1}etcpasswd)foriinuserdoawkF:vxi1x{print1,2}etcshadowdone
  73、统计etcpasswd中root出现的次数!binbash统计etcpasswd中root出现的次数每读取一行文件内容,即从第1列循环到最后1列,依次判断是否包含root关键词,如果包含则xawkF:{i1;while(iNF){if(iroot){x};i}}END{printroot出现次数为x}etcpasswd
  74、统计Linux进程相关数量信息!binbash统计Linux进程相关数量信息running0sleeping0stoped0zombie0在proc目录下所有以数字开始的都是当前计算机正在运行的进程的进程PID每个PID编号的目录下记录有该进程相关的信息forpidinproc〔19〕doprocs〔procs1〕stat(awk{print3}pidstat)每个pid目录下都有一个stat文件,该文件的第3列是该进程的状态信息casestatinR)running〔running1〕;;T)stoped〔stoped1〕;;S)sleeping〔sleeping1〕;;Z)zombie〔zombie1〕;;esacdoneecho进程统计信息如下echo总进程数量为:procsechoRunning进程数为:runningechoStoped进程数为:stopedechoSleeping进程数为:sleepingechoZombie进程数为:zombie
  75、从键盘读取一个论坛积分,判断论坛用户等级!binbash从键盘读取一个论坛积分,判断论坛用户等级等级分类如下:大于等于90神功绝世大于等于80,小于90登峰造极大于等于70,小于80炉火纯青大于等于60,小于70略有小成小于60初学乍练readp请输入积分(0100):JFif〔JFge90〕;thenechoJF分,神功绝世elif〔JFge80〕;thenechoJF分,登峰造极elif〔JFge70〕;thenechoJF分,炉火纯青elif〔JFlt60〕;thenechoJF分,略有小成elseechoJF分,初学乍练fi
  76、判断用户输入的数据类型(字母、数字或其他)!binbash判断用户输入的数据类型(字母、数字或其他)readp请输入一个字符:KEYcaseKEYin〔az〕〔AZ〕)echo字母;;〔09〕)echo数字;;)echo空格、功能键或其他控制字符esac
  77、显示进度条(数字版)!binbash显示进度条(数字版)echo使用e选项后,在打印参数中可以指定H,设置需要打印内容的x,y轴的定位坐标设置需要打印内容在第几行,第几列foriin{1。。100}doechoe33〔6;8H〔echoe33〔6;9Hiechoe33〔6;13H〕sleep0。1done
  78、打印斐波那契数列!binbash打印斐波那契数列(该数列的特点是后一个数字,永远都是前2个数字之和)斐波那契数列后一个数字永远是前2个数字之和如:011235813。。。。。。list(01)foriinseq211dolist〔i〕expr{list〔1〕}{list〔2〕}doneecho{list〔〕}
  79、判断用户输入的是Yes或NO!binbash判断用户输入的是Yes或NOreadpAreyousure?〔yn〕:surecasesureinyYYesYES);nNNOno););esac
  80、显示本机Linux系统上所有开放的端口列表!binbash显示本机Linux系统上所有开放的端口列表从端口列表中观测有没有没用的端口,有的话可以将该端口对应的服务关闭,防止意外的攻击可能性ssnutlpawk{print1,5}awkF〔:〕{print协议:1,端口号:NF}grep〔09〕uniq
  81、将Linux系统中UID大于等于1000的普通用户都删除!binbash将Linux系统中UID大于等于1000的普通用户都删除先用awk提取所有uid大于等于1000的普通用户名称再使用for循环逐个将每个用户删除即可user(awkF:31000{print1}etcpasswd)foriinuserdouserdelridone
  82、使用脚本开启关闭虚拟机!binbash使用脚本开启关闭虚拟机脚本通过调用virsh命令实现对虚拟机的管理,如果没有该命令,需要安装libvirtclient软件包1是脚本的第1个参数,2是脚本的第2个参数第1个参数是你希望对虚拟机进行的操作指令,第2个参数是虚拟机名称case1inlist);start)virshstart2;;stop)virshdestroy2;;enable)virshautostart2;;disable)virshautostartdisable2;;)echoUsage:0listechoUsage:0〔startstopenabledisable〕VMnamecatEOFlist显示虚拟机列表start启动虚拟机stop关闭虚拟机enable设置虚拟机为开机自启disable关闭虚拟机开机自启功能EOF;;esac
  83、调整虚拟机内存参数的shell脚本!binbash调整虚拟机内存参数的shell脚本脚本通过调用virsh命令实现对虚拟机的管理,如果没有该命令,需要安装libvirtclient软件包catEOF1。调整虚拟机最大内存数值2。调整实际分配给虚拟机的内存数值EOFreadp请选择〔12〕:selectcaseselectin1)readp请输入虚拟机名称namereadp请输入最大内存数值(单位:k):;2)readp请输入虚拟机名称namereadp请输入实际分配内存数值(单位:k):;)echoE;esac
  84、查看KVM虚拟机中的网卡信息(不需要进入启动或进入虚拟机)!binbash查看KVM虚拟机中的网卡信息(不需要进入启动或进入虚拟机)该脚本使用guestmount工具,可以将虚拟机的磁盘系统挂载到真实机文件系统中Centos7。2中安装libguestfstoolsc可以获得guestmount工具虚拟机可以启动或者不启动都不影响该脚本的使用将虚拟机磁盘文件挂载到文件系统后,就可以直接读取磁盘文件中的网卡配置文件中的数据clearmountpointmediavirtimage〔!dmountpoint〕mkdirmountpointreadp输入虚拟机名称:nameecho请稍后。。。如果有设备挂载到该挂载点,则先umount卸载thenumountmountpointfi只读的方式,将虚拟机的磁盘文件挂载到特定的目录下,这里是mediavirtimage目录guestmountrdnameimountpointechoechoechoe33〔32mname虚拟机中网卡列表如下:33〔0mdev(lsmediavirtimageetcsysconfignetworkscriptsifcfgawkF〔〕{print9})echodevechoechoechoechoechoe33〔32m网卡IP地址信息如下:33〔0mforiindevdoechoni:grepqIPADDRmediavirtimageetcsysconfignetworkscriptsifcfgiecho未配置IP地址awkFIPADDR{print2}mediavirtimageetcsysconfignetworkscriptsifcfgidoneecho
  85、不登陆虚拟机,修改虚拟机网卡IP地址!binbash不登陆虚拟机,修改虚拟机网卡IP地址该脚本使用guestmount工具,Centos7。2中安装libguestfstoolsc可以获得guestmount工具脚本在不登陆虚拟机的情况下,修改虚拟机的IP地址信息在某些环境下,虚拟机没有IP或IP地址与真实主机不在一个网段真实主机在没有virtmanger图形的情况下,远程连接虚拟机很麻烦该脚本可以解决类似的问题readp请输入虚拟机名称:thenecho修改虚拟机网卡数据,需要关闭虚拟机virshdestroynamefimountpointmediavirtimage〔!dmountpoint〕mkdirmountpointecho请稍后。。。thenumountmountpointfiguestmountdnameimountpointreadp请输入需要修改的网卡名称:devreadp请输入IP地址:addr判断原本网卡配置文件中是否有IP地址,有就修改该IP,没有就添加一个新的IP地址ifgrepqIPADDRthensediIPADDRs。addrmountpointetcsysconfignetworkscriptsifcfgdevelseechoIPADDRaddrmountpointetcsysconfignetworkscriptsifcfgdevfi如果网卡配置文件中有客户配置的IP地址,则脚本提示修改IP完成awkFvxaddr2x{print完成。。。}mountpointetcsysconfignetworkscriptsifcfgdev
  86、破解虚拟机密码,无密码登陆虚拟机系统!binbash破解虚拟机密码,无密码登陆虚拟机系统该脚本使用guestmount工具,Centos7。2中安装libguestfstoolsc可以获得guestmount工具readp请输入虚拟机名称:thenecho破解,需要关闭虚拟机virshdestroynamefimountpointmediavirtimage〔!dmountpoint〕mkdirmountpointecho请稍后。。。thenumountmountpointfiguestmountdnameimountpoint将passwd中密码占位符号x删除,该账户即可实现无密码登陆系统sedirootsxmountpointetcpasswd
  87、Shell脚本对信号的处理,执行脚本后,按键盘CtrlC无法终止的脚本!binbashShell脚本对信号的处理,执行脚本后,按键盘CtrlC无法终止的脚本使用trap命令可以拦截用户通过键盘或kill命令发送过来的信号使用killl可以查看Linux系统中所有的信号列表,其中2代表CtrlCtrap当发现有用户ctrlC希望终端脚本时,就执行echo暂停10s;sleep10这两条命令另外用户使用命令:〔kill2脚本的PID〕也可以中断脚本和CtrlC一样的效果,都会被trap拦截trapecho暂停10s;sleep102while:doechogogogodone
  88、一键部署memcached!binbash一键部署memcached脚本用源码来安装memcached服务器注意:如果软件的下载链接过期了,请更新memcached的下载链接wgethttp:www。memcached。orgfilesmemcached1。5。1。tar。gzyumyinstallgcctarxfmemcached1。5。1。tar。gzcdmemcached1。5。1。configuremakemakeinstall
  89、一键配置VNC远程桌面服务器(无密码版本)!binbash一键配置VNC远程桌面服务器(无密码版本)脚本配置的VNC服务器,客户端无需密码即可连接客户端仅有查看远程桌面的权限,没有鼠标和键盘的操作权限rpmquietqtigervncserverif〔?ne0〕;thenyumytigervncserverfix0vncserverAcceptKeyEvents0AlwaysShared1AcceptPointerEvents0SecurityTypesNonerfbport5908
  90、关闭SELinux!binbash关闭SELinuxsediSELINUXs。disabledetcselinuxconfigsetenforce0
  91、查看所有虚拟机磁盘使用量以及CPU使用量信息!binbash查看所有虚拟机磁盘使用量以及CPU使用量信息virtdfreadn1按任意键继续keyvirttop
  92、使用shell脚本打印图形!binbash使用shell脚本打印如下图形:打印第一组图片for(())为类C语言的语法格式,也可以使用done的格式替换for((i1;i9;i))循环会执行9次,i从1开始到9,每循环一次i自加1clearfor((i1;i9;i))dofor((j1;j))doechonidoneechodonereadn1按任意键继续key打印第二组图片clearfor((i1;i5;i))dofor((j1;j))doechondoneechodonereadn1按任意键继续key打印第三组图片clearfor((i1;i5;i))dofor((j1;j))doechondoneechodonefor((i5;i1;i))dofor((j1;j))doechondoneechodone
  93、根据计算机当前时间,返回问候语,可以将该脚本设置为开机启动!binbash根据计算机当前时间,返回问候语,可以将该脚本设置为开机启动0012点为早晨,1218点为下午,1824点为晚上使用date命令获取时间后,if判断时间的区间,确定问候语内容tm(dateH)if〔tmle12〕;thenmsgGoodMorningUSERelif〔tmgt12atmle18〕;thenmsgGoodAfternoonUSERelsemsgGoodNightUSERfiecho当前时间是:(dateYmdH:M:S)echoe33〔34mmsg33〔0m
  94、读取用户输入的账户名称,将账户名写入到数组保存!binbash读取用户输入的账户名称,将账户名写入到数组保存定义数组名称为name,数组的下标为i,小标从0开始,每输入一个账户名,下标加1,继续存下一个账户最后,输入over,脚本输出总结性信息后脚本退出i0while:doreadp请输入账户名,输入over结束:keyif〔keyover〕;thenbreakelsename〔i〕keyletifidoneecho总账户名数量:{name〔〕}echo{name〔〕}
  95、判断文件或目录是否存在!binbash判断文件或目录是否存在if〔eq0〕;thenecho未输入任何参数,请输入参数echo用法:0〔文件名目录名〕fiif〔f1〕;thenecho该文件,存在lsl1elseecho没有该文件fiif〔d1〕;thenecho该目录,存在lsld2elseecho没有该目录fi
  96、打印各种格式的时间!binbash打印各种时间格式echo显示星期简称(如:Sun)dateaecho显示星期全称(如:Sunday)dateAecho显示月份简称(如:Jan)datebecho显示月份全称(如:January)dateBecho显示数字月份(如:12)datemecho显示数字日期(如:01号)datedecho显示数字年(如:01号)dateYecho显示年月日dateFecho显示小时(24小时制)dateHecho显示分钟(00。。59)dateMecho显示秒dateSecho显示纳秒dateNecho组合显示dateYmdH:M:S
  97、使用egrep过滤MAC地址!binbash使用egrep过滤MAC地址MAC地址由16进制组成,如AA:BB:CC:DD:EE:FF〔09afAF〕{2}表示一段十六进制数值,{5}表示连续出现5组前置:的十六进制egrep〔09afAF〕{2}(:〔09afAF〕{2}){5}1
  98、统计双色球各个数字的中奖概率!binbash统计双色球各个数字的中奖概率往期双色球中奖号码如下:010411283132160407081823240202050616282904041922273033010510181930310302061112192906统计篮球和红球数据出现的概率次数(篮球不分顺序,统计所有篮球混合在一起的概率)awk{print123456}1。txtsortuniqcsortawk{print7}1。txtsortuniqcsort
  99、生成签名私钥和证书!binbash生成签名私钥和证书readp请输入存放证书的目录:dirif〔!ddir〕;thenecho该目录不存在exitfireadp请输入密钥名称:name使用openssl生成私钥opensslgenrsaout{dir}{name}。key使用openssl生成证书subj选项可以在生成证书时,非交互自动填写CommonName信息opensslreqnewx509key{dir}{name}。keysubjCNcommonout{dir}{name}。crt
  100、使用awk编写的wc程序!binbash使用awk编写的wc程序自定义变量chars变量存储字符个数,自定义变量words变量存储单词个数awk内置变量NR存储行数length()为awk内置函数,用来统计每行的字符数量,因为每行都会有一个隐藏的,所以每次统计后都1wc程序会把文件结尾符也统计在内,可以使用catA文件名,查看该隐藏字符awk{charslength(0)1;wordsNF}END{printNR,words,chars}1
  文章对你有帮助,请点赞转发哦
投诉 评论 转载

产业互联网与消费互联网有哪些差别?自2015年左右开始,产业互联网一直是中国互联网行业内讨论的热点话题。产业互联网是与消费互联网相对的概念,两者均属于互联网经济的概念范畴之内。虽然,时至今日,关于两者的内……互联网早报腾讯回应微视裁员报道均为不实消息齐鲁晚报齐鲁壹点整理腾讯回应微视裁员:报道均为不实消息腾讯回应有关微视裁员的消息称,外界有关于微视将减员、裁撤员工的报道不实。在OVBU(在线视频事业部)进行的新一……东风Honda第十一代思域郑州区域正式上市10月10日,随着我,即世界为主题的第十一代思域发布会在河南艺术中心顺利举行,东风Honda第十一代思域在郑州区域正式上市。秉承爽快的全新开发理念,第十一代思域在标杆之上再进化……JAVA方法定义及调用1。方法概述1。1方法的概念方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集注意:方法必须先创建才可以使用,该过程……100个LinuxShell脚本经典案例给大家分享100个LinuxShell脚本经典案例,另外本篇文档也已经整理成pdf,易失效,请及时保存链接:https:pan。baidu。coms1H8RhYJJWWeoLP……听说过物种灭绝,可是很少听说过新物种诞生,地球上的物种究竟从新物种一直都在酝酿之中,这个过程从未停止过。狭义上讲任何一个物种子群落由于环境变迁、地理隔离而造成基因异化,成功适应并长期繁衍之后都会形成新的物种,北极熊和棕熊的分化就是个例子……浅谈HTTP缓存的用法前言缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。我们使用HTTP缓存,通过复用缓存资源,减少了客户端等待时间和网络流量,同时也能缓解服务器端的压力。可……和智能终端(手机)交朋友,老年生活益处多多时代的车轮滚滚而来,上一波移动互联网浪潮刚过,人工智能的潮头来了,人工智能还没过去,5G巨浪和区块链又打过来了。云计算、大数据恰好印证了这一点:时代日新月异,我们思维必须……联通自主新机官宣价格上极具优势8月19日消息,今天中国联通宣布其自主品牌UMAGIC优畅享的第二款产品,优畅享30e将于本月23日正式发布。该机定位于入门市场,官方在宣布的时候也已经公布了这款手机的外……供应商诉北京盒马店大欺客!四年供货800多万,没赚钱倒被坑68月11日晚间,社交媒体上备注北京爱娜国际美容科技有限公司总经理以马云阿里旗下北京盒马的供应商发文称,从2017年开始与盒马合作,四年多来共计给盒马供货800多万元。但四年来辛……微信又添新功能!网友这次还真的挺实用的微信关怀模式,现在都支持听文字消息了。开启后,点一下聊天中的文字消息就能听到。无论你是安卓手机,还是苹果手机,更新到最新版本就能用。朋友们可以这样开启。打开微……酷派COOL20支持90天换机2年质保,所有端口定制密封设计IT之家5月24日消息今日上午,酷派官方宣布,酷派COOL20支持90天换机2年质保,且每一台酷派COOL20都通过国际标准的10分钟持续喷淋测试,为所有端口定制密封设计。……
为什么中国员工大多用苹果,而领导都喜欢华为?宝兰德再次获得信息技术服务标准(ITSS)三级资质对鸿蒙系统有误读误解者,可看一下华为内部关于HarmonyOLinux下netstatpskill命令详解及常用命令收集麒麟不死,华为麒麟9010曝光,采用3nm工艺vue创建项目的三种方式苹果13ProMax初定9月?天花板配置A15顶级三星屏,网日媒6G专利领域竞争愈演愈烈中国处于领先地位请教以前的胶片相机镜头用在今天的数码相机上,表现会不会输给数120Hz屏双主摄55W闪充,跌至2998元,骁龙888旗舰前华为高管再创业造车,牛创新能源获5亿元A轮融资浅谈住宅小区电动汽车充电桩配置安科瑞江雪
明朝内行厂有多恐怖?锦衣卫和东西厂见了绕道走,官员见了先下跪红米note软件怎么安装红米note软件安装方法图文教程开足马力忙生产丨广西各地有序推动企业达产满产男用安全套使用方法详解柳永为开封写了一首词,苏轼大赞说好,李清照却不以为然怎样才能在苦闷的生活中找回幸福?499元映泰B550M主板!支援AMD锐龙15代处理器,送9我喜欢的一个人二站在哪里二站在什么地方孙子有赡养爷爷奶奶的义务吗研究生学位论文有必要这样的“预答辩”吗?怕老心理对老年人影响很大

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁