我们平时连接Linux服务器做维护的时候,通常是直接命令行(Terminal)下直接输入 ssh [email protected]  ssh -p1234 [email protected]类似这样的,然后接下来输入密码,如果运维的机器比较多,密码比较复杂或者都不一样的时候,每次输入就会比较麻烦,这时候,就可以采用key-file(免密码)登录了。 在客户端的命令行运行,提示key保存的位置,默认位置/Users/Terry/.ssh/id_rsa直接按回车就好了,我这里因为已经生成过了,提示/Users/Terry…

2021-02-05 0条评论 853点热度 0人点赞 admin 阅读全文

有时候,我们在 Shell 运行一个程序,把 Shell 窗口关掉,或者按 Control+C 关闭的时候,程序也会 kill 掉了,实际我们需要让他们在后台运行,并把它的控制台输出重定向到某个日志文件,可以这样做: /path/to/executable >/var/log/log1.log 2>&1 & #如果不要日志,/var/log/log1.log改成/dev/null #例如 java -jar /path/to/xxx.jar >/dev/null 2>&…

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

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

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

2021-01-20 1条评论 5698点热度 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条评论 981点热度 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条评论 11021点热度 4人点赞 admin 阅读全文