作为一名Linux工程师,会写好的脚本不仅能提高工作效率,还能有更多的时间做自己的事。最近在网上冲浪的时候,也注意收集一些大佬写过的脚本,汇总整理一下,欢迎收藏,与君共勉! (1)用户猜数字!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 (2)查看有多少远程的IP在连接本机!binbash!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 (3)helloworld!binbashfunctionexample{echoHelloworld!}example (4)打印tomcat的pid!binshv1Hellov2worldv3{v1}{v2}echov3pidlistpsefgrepapachetomcat7。0。75grepvgrepawk{print2}echopidlistechotomcatIdlist:pidlist显示pid (5)脚本编写剪刀、石头、布游戏!binbashgame(石头剪刀布)num〔RANDOM3〕computer{game〔sum〕}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 (6)九九乘法表!binbashforiinseq9doforjinseqidoechonji〔ij〕doneechodone (7)脚本用源码来安装memcached服务器!binbash一键部署memcached脚本用源码来安装memcached服务器注意:如果软件的下载链接过期了,请更新memcached的下载链接wgethttp:www。memcached。orgfilesmemcached1。5。1。tar。gzyumyinstallgcctarxfmemcached1。5。1。tar。gzcdmemcached1。5。1。configuremakemakeinstall (8)检测本机当前用户是否为超级管理员!binbash检测本机当前用户是否为超级管理员,如果是管理员,则使用yum安装vsftpd,如果不是,则提示您非管理员(使用字串对比版本)if〔USERroot〕thenyumyinstallvsftpdelseecho您不是管理员,没有权限安装软件fi (9)if运算表达式!binbashxvif〔1eq2〕;thenechowoaiwenminelif〔1eq3〕;thenechowoaiwenxingelif〔1eq4〕;thenechowodexinelif〔1eq5〕;thenechowodeaifi (11)脚本杀掉tomcat进程并重新启动!binbashkilltomcatpidpidlistpsefgrepapachetomcat7。0。75grepvgrepawk{print2}找到tomcat的PID号echotomcatIdlist:pidlist显示pidkill9pidlist杀掉改进程echoKILLpidlist:提示进程以及被杀掉echoservicestopsuccessechostarttomcatcdoptapachetomcat7。0。75pwdrmrfworkcdbin。startup。tailf。。logscatalina。out (12)打印国际象棋棋盘!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 (13)统计当前Linux系统中可以登录计算机的账户有多少个!binbash统计当前Linux系统中可以登录计算机的账户有多少个方法1:grepbash34;etcpasswdwcl方法2:awkf:bash{x}end{printx}etcpasswd (14)备份MySQL表数据!binshsourceetcprofiledbNamemysqltableNamedbecho〔dateYmdH:M:S〕startloadingdata。。。mysqlurootprootP3306{dbName}eLOADDATALOCALINFILEhomewenminwenxing。txtINTOTABLE{tableName}FIELDSTERMINATEDBY;echo〔dateYmdH:M:S〕endloadingdata。。。exitEOF (15)使用死循环实时显示eth0网卡发送的数据包流量!binbash使用死循环实时显示eth0网卡发送的数据包流量while:doecho本地网卡ens33流量信息如下:ifconfigens33grepRXpackawk{print5}ifconfigens33grepTXpackawk{print5}sleep1done (16)编写脚本测试192。168。4。024整个网段中哪些主机处于开机状态,哪些主机处于关机!binbash编写脚本测试192。168。4。024整个网段中哪些主机处于开机状态,哪些主机处于关机状态(for版本)foriin{1。。254}do每隔0。3秒ping一次,一共ping2次,并以1毫秒为单位设置ping的超时时间pingc2i0。3W1192。168。1。idevnullif〔?eq0〕;thenecho192。168。1。iisupelseecho192。168。1。iisdownfidone (17)编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户!binbash编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默认的123456作为默认密码。readp请输入用户名:user使用z可以判断一个变量是否为空,如果为空,提示用户必须输入账户名,并退出脚本,退出码为2没有输入用户名脚本退出后,使用?查看的返回码为2if〔zuser〕;thenecho您不需要输入账户名exit2fi使用sttyecho关闭shell的回显功能使用sttyecho打开shell的回显功能sttyechoreadp请输入密码:passsttyechopass{pass:123456}useradduserechopasspasswdstdinuser (18)使用脚本对输入的三个整数进行排序!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 (19)根据计算机当前时间,返回问候语,可以将该脚本设置为开机启动!binbash根据计算机当前时间,返回问候语,可以将该脚本设置为开机启动0012点为早晨,1218点为下午,1824点为晚上使用date命令获取时间后,if判断时间的区间,确定问候语内容tm(dateH)if〔tmle12〕;thenmsgGoodMorningUSERelif〔tmgt12atmle18〕;thenmsgGoodAfternoonUSERelsemsgGoodNightUSERfiecho当前时间是:(dateYmdH:M:S)echoe33〔34mmsg33〔0m (20)将Ilovcls写入到txt文件中!binbashcdhomewenmintouchwenxing。txtechoIlovclswenxing。txt (21)脚本编写for循环判断!binbashs0;for((i1;i100;i))dos〔si〕doneechosr0;a0;b0;for((x1;x9;x))doa〔ax〕echoxdonefor((y1;y9;y))dob〔by〕echoydoneechor〔ab〕 (22)脚本编写for循环判断!binbashforiindoechowenminxihuanidoneforjindoechowenminxihuanjdone (23)脚本每周5使用tar命令备份varlog下的所有日志文件!binbash每周5使用tar命令备份varlog下的所有日志文件vimrootlogbak。sh编写备份脚本,备份后的文件名包含日期标签,防止后面的备份将前面的备份数据覆盖注意date命令需要使用反引号括起来,反引号在键盘tab键上面tarczflogdateYmd。tar。gzvarlogcrontabe编写计划任务,执行备份脚本00035homewenmindataslogbak。sh (24)脚本编写求和函数运算functionxx()!binbashfunctionsum(){s0;s〔12〕echos}readpinputyourparameterp1readpinputyourparameterp2sump1p2functionmulti(){r0;r〔12〕echor}readpinputyourparameterx1readpinputyourparameterx2multix1x2v11v22letv3v1v2echov3 (25)脚本编写caseesac分支结构表达式!binbashcase1in1);2);3);4);5);6);7););esac (26)定义要监控的页面地址,对tomcat状态进行重启或维护!binshfunction:自动监控tomcat进程,挂了就执行重启操作author:huanghongDEFINE获取tomcatPPIDTomcatID(psefgreptomcatgrepwapachetomcat7。0。75grepvgrepawk{print2})tomcatstartupStartTomcatoptapachetomcat7。0。75binstartup。shTomcatCacheusrapachetomcat5。5。23work定义要监控的页面地址WebUrlhttp:192。168。254。118:8080日志输出GetPageInfodevnullTomcatMonitorLogtmpTomcatMonitor。logMonitor(){echo〔info〕开始监控tomcat。。。〔(dateFH:M:S)〕if〔TomcatID〕thenecho〔info〕tomcat进程ID为:TomcatID。获取返回状态码TomcatServiceCode(curlsoGetPageInfom10connecttimeout10WebUrlw{httpcode})if〔TomcatServiceCodeeq200〕;thenecho〔info〕返回码为TomcatServiceCode,tomcat启动成功,页面正常。elseecho〔error〕访问出错,状态码为TomcatServiceCode,错误日志已输出到GetPageInfoecho〔error〕开始重启tomcatkill9TomcatID杀掉原tomcat进程sleep3rmrfTomcatCache清理tomcat缓存StartTomcatfielseecho〔error〕进程不存在!tomcat自动重启。。。echo〔info〕StartTomcat,请稍候。。。。。。rmrfTomcatCacheStartTomcatfiecho}MonitorTomcatMonitorLog (27)通过位置变量创建Linux系统账户及密码!binbash通过位置变量创建Linux系统账户及密码1是执行脚本的第一个参数,2是执行脚本的第二个参数useradd1echo2passwdstdin1 (28)对变量的传入与获取个数及打印!binbashecho0123传入三个参数echo获取传入参数的数量echo打印获取传入参数echo打印获取传入参数 (29)实时监控本机内存和硬盘剩余空间,剩余内存小于500M、根分区剩余空间小于1000M时,发送报警邮件给root管理员!binbash实时监控本机内存和硬盘剩余空间,剩余内存小于500M、根分区剩余空间小于1000M时,发送报警邮件给root管理员提取根分区剩余空间disksize(dfawk{print4})提取内存剩余空空间memsize(freeawkMem{print4})while:do注意内存和磁盘提取的空间大小都是以Kb为单位if〔disksizele512000amemsizele1024000〕thenmailsWarningrootEOFInsufficientresources,资源不足EOFfidone (30)检查指定目录下是否存在对应文件!binbashif〔fhomewenmindatas〕thenechoFileexistsfi (31)脚本定义while循环语句!binbashif〔fhomewenmindatas〕thenechoFileexistsfi〔rootrichdatas〕catwhile。sh!binbashs0i1while〔ile100〕dos〔si〕i〔i1〕doneechosechoi (32)一键部署LNMP(RPM包版本)!binbash一键部署LNMP(RPM包版本)使用yum安装部署LNMP,需要提前配置好yum源,否则该脚本会失败本脚本使用于centos7。2或RHEL7。2yumyinstallhttpdyumyinstallmariadbmariadbdevelmariadbserveryumyinstallphpphpmysqlsystemctlstarthttpdmariadbsystemctlenablehttpdmariadb (33)读取控制台传入参数!binbashreadt7pinputyournameNAMEechoNAMEreadt11pinputyouageAGEechoAGEreadt15pinputyourfriendFRIENDechoFRIENDreadt16pinputyourloveLOVEechoLOVE (34)脚本实现复制!binbashcp12 (35)脚本实现文件存在与否的判断!binbashif〔ffile。txt〕;thenecho文件存在elseecho文件不存在fi END 资源领取学习培训网工提升 请V咨询 微信号:glabmary 文章来源:部分内容综合自网络,因觉优质,特此分享,侵删。