这就是我打算做的:
#!/bin/bash
sudo -i <<'EOF'
iptables-save | awk '/^[*]/ { print $1 }
/^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
/COMMIT/ { print $0; }' | iptables-restore
EOF
我将保存上面的内容并将其命名为cleariptables.sh。我将其设置为可执行文件。
它将被放置在以下路径中名为 bin 的文件夹中:/home/cymbal/bin/
(其中 cymbal 是用户名)
我将在桌面上创建一个cleariptables.sh的快捷方式。快捷方式的内容将是:
[Desktop Entry]
Version=1.0
Type=Application
Terminal=true
Icon[en_US]=nm-device-wired
Name[en_US]=ClearIPtables
Exec=gksudo /home/cymbal/bin/cleariptables.sh
Comment[en_US]=Flush iptables filters
Name=ClearIPtables
Comment=Flush iptables script
Icon=nm-device-wired
每当我单击桌面快捷方式时,系统都会提示我输入密码并且脚本将运行。
问题:单击桌面快捷方式会提示我输入密码。由于有一个须藤-i在脚本中,系统会再次提示我输入密码吗?
答案1
不,系统不应再次提示您输入密码。由于gksudo
.根据我的经验,sudo
如果您已经是 root,则永远不会要求输入密码(尽管我找不到明确的记录)。
答案2
您可以使用无密码WD您的文件中的指令sudoers
。
将此行添加到您的/etc/sudoers
文件中
your_login ALL = (root) NOPASSWD: /path/to/your/script
编辑此文件时,您应该使用命令visudo
而不是常规文本编辑器。这将在保存更改之前检查语法错误。