V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
vjnjc
V2EX  ›  Linux

问一个用法,关于 alias

  •  
  •   vjnjc · 2017-10-11 12:31:33 +08:00 · 1965 次点击
    这是一个创建于 2381 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有句常用命令,想做成 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/ 吧。。。

    第 1 条附言  ·  2017-10-11 13:40:49 +08:00

    目前的做法是包成function

    function ninja_f2b_all_ban_ip() {
        sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0"'
    }
    
    2 条回复    2017-10-11 13:27:31 +08:00
    zuolan
        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'"
    vjnjc
        2
    vjnjc  
    OP
       2017-10-11 13:27:31 +08:00   ❤️ 1
    @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"'
    }
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1015 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:36 · PVG 03:36 · LAX 12:36 · JFK 15:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.