场景:需要检查某个命令输出里包含某个字符串,有的话再执行下一步,没有的话,就说明脚本执行错误,需要发送提醒等等 简单的脚本举例如下: #检查/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条评论 752点热度 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条评论 2753点热度 0人点赞 admin 阅读全文

networksetup -listallnetworkservices #返回如下(主要有Ethernet有线网,Wi-Fi无线网络等): An asterisk (*) denotes that a network service is disabled. SAMSUNG CDMA Technologies USB-Serial Controller D USB 10/100/1000 LAN Ethernet Wi-Fi iPad USB iPhone USB Bluetooth PAN Thunderbol…

2021-01-27 0条评论 1205点热度 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条评论 1438点热度 0人点赞 admin 阅读全文

有时候,我们需要在Linux服务器里挂载其他服务器共享出来的NFS网络位置,或者NAS里分享出来的NFS/Samba网络位置,还有Windows下分享的共享位置。 MacOS挂载Windows里分享的Samba位置,请查看:https://blog.terrynow.com/2021/05/16/macos-access-windows-samba-share-specific-user-domain-hidden-share-etc/ 以192.168.1.1把/var/share 共享给192.168.1.2为…

2021-01-21 1条评论 6967点热度 3人点赞 admin 阅读全文

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

2021-01-20 1条评论 5373点热度 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条评论 853点热度 0人点赞 admin 阅读全文

SBM协议,映射网络驱动器,图形界面下,打开【此电脑】-映射网络驱动器-选择虚拟驱动器、输入文件夹(\\192.168.50.12\backup,根据实际情况修改),按照图示就可以了 不过有时候,我们需要在命令行下执行添加网络驱动器的命令,或者运行后移除网络驱动器。 下面给出示例,bat里,说明直接用注释用rem写了 rem 这是隐藏名称的共享 登录的是域里面的帐号 域是domain 用户名是zhangsan 密码是Password net use Y: \\192.168.50.12\backup$ /user:…

2021-01-15 0条评论 10014点热度 4人点赞 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条评论 1105点热度 0人点赞 admin 阅读全文

我们可以通过设定iptables防火墙来做到让特定的IP访问网站,但是有时候需要网站可以全部访问,但是只针对某个页面(比如管理页面)只运行特定IP访问,这个时候可以用nginx来设置 假设需要让/admin只允许202.202.xxx.0-255来访问,而且如果不允许的IP访问,会显示404,以为是网页不存在,nginx如下设定即可 server { #省略部分配置 #这样做,让403 forbiden 也显示成404,外面访问的人以为 page 不存在 error_page 403 404 /404.html; …

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