嗨,我正在寻找一种方法来净化 traceroute/tracepath 的输入/实际上是任何 bash 输入。
例如:
root@meh:~# tracepath http://google.com/
gethostbyname2: Unknown host
我可能会在 bash 中设置一个别名,但需要先知道如何去做(也许是 shell 脚本?)。
干杯!
答案1
域名的有效字符集有限。唯一对 Bash 有特殊含义的字符是破折号:,-
但很巧的是,它在域名开头无效。您可以使用这个正则表达式:"^[a-zA-Z0-9\.]\+[-a-zA-Z0-9\.]\+$"
。
此正则表达式将传递无效的域名,例如..
和.-.-.-.-
,但不会传递任何无效的人物并且不允许使用破折号作为第一个字符。应该使输入可以安全地用作 的参数tracepath
。
当然,由于您要验证此输入是否对 bash 安全,因此您必须使用 bash 以外的其他语言进行验证。在 bash 中,您无法安全地进行此验证。