场景:需要检查某个命令输出里包含某个字符串,有的话再执行下一步,没有的话,就说明脚本执行错误,需要发送提醒等等 简单的脚本举例如下: #检查/usr/local/sbin/ipsec auto --status的命令是否包含"IPsec SA established" /usr/local/sbin/ipsec auto --status | grep 'IPsec SA established' &> /dev/null if [ $? == 0 ]; then echo "matched" els…

2021-01-30 0条评论 837点热度 0人点赞 admin 阅读全文

在写Shell脚本的时候,遇到要把数据POST到服务器的时候,POST的数据可能是动态的或者是其他Shell执行的结果。 以POST JSON为例 (如果要POST FORM-DATA或其他的,参考 Linux Bash Curl Post的例子) #注意=前后不要加空格 #一个普通变量的例子 name="xxx" #另一个例子,msg的内容是执行另一个shell脚本的执行结果的输出,我们准备把输出发送给API msg=$(/path/to/another_shell.sh 2>&1) curl ht…

2021-01-29 1条评论 2930点热度 0人点赞 admin 阅读全文

我们在写 Shell 脚本的时候,cp 复制或mv移动的时候,因为要启用后台运行,想要处理已存在文件的时候,直接覆盖,而不要跳出确认。可是无论是否你加了-f参数,还是会提示是否覆盖。 经研究过后发现,是因为在~/.bashrc 加了如下,-i 是强制提示 alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' 解决的办法有4个,以cp 为例,其他命令类似 直接输入命令,在cp前加上\即可实现,例如: \cp -fR /tmp/data/* /opt/data/ 利用管道…

2021-01-25 0条评论 1626点热度 0人点赞 admin 阅读全文

有时候需要执行脚本的时候,需要模拟人为操作需要等待几秒钟后执行,但又不能是固定的等待时间,可以使用如下随机等待几秒钟: #!/bin/bash echo "开始随机等待 1-10 秒..." # 1-10秒内随机 sleep $[ ( $RANDOM % 10 ) + 1 ] echo "等待后继续"  

2021-01-20 1条评论 5704点热度 0人点赞 admin 阅读全文

很多时候,我们写Shell脚本的时候,需要下载文件、根据是否下载到文件后(文件是否存在)来判断下一步的操作。 在Bash里,可以使用test来判断文件/文件夹是否存在,格式如下 test EXPRESSION [ EXPRESSION ] [[ EXPRESSION ]] 两个括号会比较常用,不过都可以试试 FILE=/opt/test.txt if [ -f "$FILE" ]; then echo "$FILE exists." fi #if else FILE=/opt/test.txt if [ -f "$…

2021-01-16 0条评论 986点热度 0人点赞 admin 阅读全文

编写Linux脚本的时候,有时需要等待用户输入变量,然后根据变量不同来执行接下来的操作, 举例如下: #!/bin/sh echo -n "Enter file name and press [ENTER]: " read file_name echo "file name is: $file_name" if [ -z "$file_name" ]; then echo 'empty file name, exit' else #执行接下来的操作 #... fi  

2021-01-09 0条评论 1265点热度 0人点赞 admin 阅读全文

数据无价,服务器运行中,如果不做备份,总觉得心理毛毛的,每天备份还是很有必要的,以Linux为例,利用crontab定时任务,每天备份服务器数据,如果有MySQL服务,也dump一份数据,在本地服务器上保留3天的备份,方便有数据误删除等,可以随时恢复;最后也要将数据复制到其他远程服务器,或者网盘(例如Google Drive),防止服务器发生以外导致数据丢失。 脚本用到的rar程序下载,Linux版本,请到https://www.rarlab.com/download.htm #! /bin/sh #当天时间,比如…

2020-12-29 0条评论 1252点热度 0人点赞 admin 阅读全文

运维的Bash脚本,有时候需要把bash运行结果post到一个网址,来看下怎么做: msg="So _advanced_ Much *innovations* ?" #post JSON curl -X POST \ -H 'Content-Type: application/json' \ -d '{"chat_id": "xxxx", "parse_mode": "Markdown", "text": "'"$msg"'"}' \ https://www.example.com/api #post form c…

2020-12-24 0条评论 1500点热度 0人点赞 admin 阅读全文