Forzar sshd habilitado al inicio del sistema– script force-at-boot-enable-ssh.sh
-
Hola
Enlazando con el hilo: Montar un disco automaticamente al bootear https://forum.pfsense.org/index.php?topic=120907.0
Una demo de como ejecutar un shell script (*.sh) al inicio del sistema en pfSense:
Por ejemplo:
Forzar sshd habilitado al inicio del sistema – script force-at-boot-enable-ssh.sh#!/bin/sh # force-at-boot-enable-sshd.sh # @javcasta – 2016 – https://javcasta.com/ # source code /etc/rc.initial # host this script at /usr/local/etc/rc.d/force-at-boot-enable-ssh.sh # add execution privilege: chmod +x /usr/local/etc/rc.d/force-at-boot-enable-ssh.sh # Check to see if SSH is running. if pgrep -q -a -F /var/run/sshd.pid sshd >/dev/null 2>&1; then echo “already enable sshd”; else #run unattended php -f /etc/rc.initial.toggle_sshd yes | php -f /etc/rc.initial.toggle_sshd fi
El script se aloja en **/usr/local/etc/rc.d/**force-at-boot-enable-ssh.sh
Se le dan permisos de jecución
chmod +x /usr/local/etc/rc.d/force-at-boot-enable-ssh.sh
[2.3.2-RELEASE][root@pfSense232a.localdomain]/usr/local/etc/rc.d: ./force-at-boot-enable-ssh.sh
already enable sshdReloading firewall rules. done.
[2.3.2-RELEASE][root@pfSense232a.localdomain]/root: yes | php -f /etc/rc.initial.toggle_sshd
SSHD is currently disabled. Would you like to enable? [y/n]?
Writing configuration… done.Enabling SSHD...
Reloading firewall rules. done.Y al inicio del sistema de pfSense, si no esta habilitado sshd, se habilita (de forma no atendida).
Salu2
-
Probado, va bien, pero en una actualización de pfsense hay que acordarse de reintroducir el script en /usr/local/etc/rc.d/
-
Hola
Me has dado una idea, definir un o unos comandos en <shellcmd>(que al guardarse en config.xml, serian perdurables) que comprueben si los scripts que uno quiere estan en el sistema sino que los baje de una web y los ejecute. :)
Otra alternativa seria el paquete system patches, creo.
Salu2</shellcmd>
-
Hola
Para que sea persistente el script vía config.xml (y se mantenga en un Update), una posible solución:
Alojar force-at-boot-enable-ssh.sh en un servidor web: http://un-servidor.com/carpeta/force-at-boot-enable-ssh.sh
En config.xml introducir en etiquetas <shellcmd>(donde corresponda):
<shellcmd>[ ! -f /usr/local/etc/rc.d/force-at-boot-enable-ssh.sh ] && /usr/bin/fetch -q -o /usr/local/etc/rc.d/force-at-boot-enable-ssh.sh “http:/un-servidor.com/carpeta/force-at-boot-enable-ssh.sh” || /bin/chmod +x /usr/local/etc/rc.d/force-at-boot-enable-ssh.sh</shellcmd> <shellcmd>[ -f /usr/local/etc/rc.d/force-at-boot-enable-ssh.sh ] && /bin/chmod +x /usr/local/etc/rc.d/force-at-boot-enable-ssh.sh ||echo "nada a hacer"</shellcmd>
Que lo que hace es: Si no existe el fichero /usr/local/etc/rc.d/force-at-boot-enable-ssh.sh lo descarga, sino: si existe le da permisos de ejecución. Y vuelvo a comprobar si existe, y le doy permisos de jecución.
No lo he probado, pero lo que no sé es si pfSense ejecuta primero al boot los ficheros de /usr/local/etc/rc.d/ o las entradas <shellcmd>del config.xml</shellcmd> … seria importante saberlo o probar la funcionalidad de esta idea :)
Salu2</shellcmd>
-
Hola
Ya he comprobado el orden de ejecución de las 3 opciones de pfSense para lanzar un comando o script al inicio.
Es la siguiente:1- /usr/local/etc/rc.d/.sh
2- <earlyshell>3- <shellcmd>4- /usr/local/etc/rc.d/.sh</shellcmd></earlyshell>Parece que los sh scripts en /usr/local/etc/rc.d/ se ejecutan dos veces, en primer orden y otra vez, tras shellcmd y earlyshellcmd
Definí en config.xml
<earlyshellcmd>echo "I am earlyshell" >> /order.tmp</earlyshellcmd> <shellcmd>echo "I am shellcmd" >> /order.tmp</shellcmd>
Creeé un script con permisos de ejecución en /usr/local/etc/rc.d/order.sh con
#!/bin/sh echo "I am /usr/local/etc/rc.d/order.sh" >> /order.tmp;
Y el volcado de /order.tmp
cat /order.tmp
I am /usr/local/etc/rc.d/order.sh
I am earlyshell
I am shellcmd
I am /usr/local/etc/rc.d/order.shSalu2