#/bin/sh 间接修改端口
#auther:qiruyi
#date:2016-08-05
#system:centos6.5
#version:1.0
#require root to run this script. //使用root用户
if [[ "$(whoami)" = "root" ]];
then echo "root is run"
else
echo "please su root to run this script"
fi
\cp /etc/ssh/sshd_config /etc/ssh/sshd_config.$(date +"%F"-$RANDOM)
sed -i ‘s%#Port 22%Port 22%‘ /etc/ssh/sshd_config
sed -i -e ‘/Port 22/a\Port 1222‘ /etc/ssh/sshd_config //追加一个端口1222
#sed ‘3a-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT ‘ -i /etc/sysconfig/iptables //追加一个端口1222
/etc/rc.d/init.d/sshd restart
if [ `lsof -i tcp:1222 |wc -l` -eq 3 ];
then
echo "ssh修改端口成功"
sed -i ‘s%Port 22%#Port 22%‘ /etc/ssh/sshd_config
else
echo "ssh修改端口不成功"
fi
#保证安全,查看/etc/ssh/sshd_config后 手动重启/etc/rc.d/init.d/sshd restart 后生效
反引号``
这个东西的用法,我百度了一下,和$()是一样的。在执行一条命令时,会先将其中的 `` ,或者是$() 中的语句当作命令执行一遍,再将结果加入到原命令中重新执行
另外,从网上摘录的区别如下:
A,()只是对一串命令重新开一个子shell进行执行
B,{}对一串命令在当前shell执行
C,()和{}都是把一串的命令放在括号里面,并且命令之间用;号隔开
D,()最后一个命令可以不用分号
E,{}最后一个命令要用分号
F,{}的第一个命令和左括号之间必须要有一个空格
G,()里的各命令不必和括号有空格
H,()和{}中括号里面的某个命令的重定向只影响该命令,但括号外的重定向则影响到括号里的所有命令
两个括号(()),是代表算数扩展,就是对其包括的东西进行标准的算数计算——注意,不能算浮点数,如果需要算浮点数,需要用bc做。
至于中括号[ ],感觉作用就是用来比较的。比如放在if语句里面,while语句里面,等等。
这里引出来[..]和[[…]]的区别:(摘自网上,实测证实):使用[[ ... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误. 比如,&&, ||, <, 和> 操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错。