技术解析

问一个用法,关于 alias
0
2021-06-28 05:28:34
idczone

我有句常用命令,想做成 alias,命令是这样的sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0"

这句命令既有双引号也有单引号,我该怎么写成语句放在 bashrc 里面?比如alias ninja_f2b_all_ban_ip='sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0"' 这样写法是无效的。

alias 不能用的话,有其他方式吗?总不能写个 script 放在 /bin/ 吧。。。


非要用 awk 的话可以这样(毕竟要解析$1、$4 双引号去不掉):
RESULT=$(sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0")
alias ninja_f2b_all_ban_ip="echo $RESULT"
换成 grep:
alias ninja_f2b_all_ban_ip="sudo iptables -L -n | grep 'REJECT' | grep -v '0.0.0.0'"

多谢分享~
第一种情况在 source ~/.bashrc 的时候就运行命令了,而不是我在输入 ninja_f2b_all_ban_ip 的时候。
第二种情况也不行,因为$5 总是 0.0.0.0
样本是这样的:
REJECT all -- 96.239.28.45 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 59.45.175.67 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 59.45.175.97 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 221.194.47.242 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 94.23.32.200 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 89.234.157.254 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 86.88.193.96 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 86.201.8.190 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 72.14.182.209 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 59.63.166.104 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 59.49.38.210 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 59.45.175.98 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 59.45.175.24 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 58.218.198.144 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 52.168.148.108 0.0.0.0/0 reject-with icmp-port-unreachable

最后我找了个 function 的方式,
function ninja_f2b_all_ban_ip() {
sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0"'
}

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服