我有句常用命令,想做成 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/ 吧。。。
目前的做法是包成function
function ninja_f2b_all_ban_ip() {
sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0"'
}
1
zuolan 2017-10-11 13:10:28 +08:00 1
非要用 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'" |
2
vjnjc OP @zuolan 多谢分享~
第一种情况在 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"' } |