在pfSense引导时执行自定义命令,有三个主要方法:shellcmd,earlyshellcmd和Shell脚本。shellcmd插件可以在GUI中管理shellcmd和earlyshellcmd标记,因此无需手动编辑config.xml中相应的值。在引导时,将首先执行earlyshellcmd命令,然后再执行shellcmd,最后在初始化软件包时执行shell脚本。
一、shellcmd方式
config.xml中的选项<shellcmd>会在系统引导过程结束时运行指定的命令。
要将shellcmd添加到配置中,可以使用shellcmd插件配置命令,如下图所示:
也可以手动编辑配置。通过“ 系统诊断”>“备份/还原”对系统配置文件进行备份,然后在文本编辑器(不要使用Windows记事本)中打开生成的XML文件。在</ system>行上方,添加一行,如下所示:
<shellcmd>mycommand -a -b -c 123</shellcmd>
可以添加多行来执行多个命令。保存文件的修改,并将修改的配置文件恢复到系统。下次系统启动时,将自动执行以下命令:
mycommand -a -b -c 123
二、earlyshellcmd方式
config.xml中的选项<earlyshellcmd>将运行在引导过程开始时指定的命令。一般情况下应该使用<shellcmd>来代替。与<shellcmd>相同,要添加<earlyshellcmd>选项,请使用shellcmd插件或手动编辑配置文件。用文本编辑器打开备份的配置文件,然后添加一行,如上面的 </ system>所示:
<earlyshellcmd>mycommand -a -b -c 123</earlyshellcmd>
可以添加多行来执行多个命令。保存文件的修改,并将修改的配置文件恢复到系统。下次系统启动时,将自动执行以下命令:
mycommand -a -b -c 123
三、shell脚本方式
任何shell脚本都可以放在/usr/local/etc/rc.d/目录中。文件名必须以.sh结尾,必须标记为可执行文件()。该目录中每个以.sh结尾的shell脚本将在引导时执行。类似于在shell界面执行以下命令:
chmod +x myscript.sh
一般情况下,尽量使用前面两个方式,因为它们保留在配置文件中,如果重新安装pfSense防火墙,只需要恢复备份的配置文件就可以了。