Appliance

shallalist2pfBlockerNG.php V2 – script para importar categorias shallalist a pfBlockerNG

Nueva versión de este script ( v1 en https://www.javcasta.com/shallalist2pfblockerng-php-script-para-importar-categorias-shallalist-a-pfblockerng/ )

Sólo cambio el “path” o camino donde trabaja el script. Ya que /tmp no es persistente en un reinicio del sistema, y he chequeado que /usr/games sí es persistente

I only change the path, because on a reboot the directory /tmp is not persistent.
Now the path is: /usr/games/ , I have checked that this directory is persistent after a reboot.

El código

<?php

/*
	shallalist2pfBlockerNG.php
	Copyright (C) 2016 javier@javcasta.com Javier Castañón
        @javcasta - PIyMenta - https://javcasta.com/

	Redistribution and use in source and binary forms, with or without
	modification, are permitted provided that the following conditions are met:

	1. Redistributions of source code must retain the above copyright notice,
	   this list of conditions and the following disclaimer.

	2. Redistributions in binary form must reproduce the above copyright
	   notice, this list of conditions and the following disclaimer in the
	   documentation and/or other materials provided with the distribution.

	THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
	AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
	OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
	POSSIBILITY OF SUCH DAMAGE.
*/

require_once("config.inc");
require_once("util.inc");
require_once("functions.inc");
require_once("pkg-utils.inc");
require_once("pfsense-utils.inc");
require_once("globals.inc");
require_once("services.inc");

global $config;
$config = parse_config(true);

//bash 
// /usr/games/
//Remove directory
print_r("Remove /usr/games/BL dir \n");
mwexec("/bin/rm -rf /usr/games/BL");
//Create directory
print_r("Create /usr/games/BL dir \n");
mwexec("/bin/mkdir /usr/games/BL");
//Download list
print_r("Download shallalist.tar.gz \n");
mwexec("/usr/bin/fetch -o /usr/games/BL http://www.shallalist.de/Downloads/shallalist.tar.gz");
#Extract and remove archive
print_r("Extract... \n");
//mwexec("/usr/bin/cd /usr/games/BL");
mwexec("/usr/bin/tar -xf /usr/games/BL/shallalist.tar.gz --strip 1 -C /usr/games/BL");
mwexec("/bin/rm -rf /usr/games/BL/shallalist.tar.gz");

function listFolders($dir)
{
    //ref //http://stackoverflow.com/questions/14358346/how-to-build-a-array-that-contains-a-folder-structure
    $dh = scandir($dir);
    $resultado = array();
    $laruta = '';

    foreach ($dh as $folder) {
        if ($folder != '.' && $folder != '..' && $folder != 'COPYRIGHT' &&
                $folder != 'global_usage' && $folder != 'shallalist.tar.gz') {
            $laruta = $dir . '/' . $folder;
            if (is_dir($dir . '/' . $folder)) {                
                $resultado[] = listFolders($dir . '/' . $folder);               
            } else {
                if (strpos($folder, 'domains') !== false) $resultado[] = $laruta;                
            }
        }
    }
    return $resultado;
}
//folders /usr/games/BL to array
$losdiraux = listFolders("/usr/games/BL");
$losdir = iterator_to_array(new RecursiveIteratorIterator(new RecursiveArrayIterator($losdiraux)), 0);

//DNSBL feed shallalist2pfBlockerNG
$j = 0;
$existeDNSBLfeed = false;
while (!empty($config['installedpackages']['pfblockerngdnsbl']['config'][$j]['aliasname'])) {
    $j++;
    if (strpos($config['installedpackages']['pfblockerngdnsbl']['config'][$j]['aliasname'], "shallalist2pfpBlockerNG") !== false) {
        $existeDNSBLfeed = true;
        print_r("Already exists DNSBL feed shallalist2pfpBlockerNG ... \n");
    }
}

if (!$existeDNSBLfeed) {
    $config['installedpackages']['pfblockerngdnsbl']['config'][$j]['aliasname'] = "shallalist2pfpBlockerNG";
    $config['installedpackages']['pfblockerngdnsbl']['config'][$j]['description'] = "shallalist to pfBlockerNG";
    $config['installedpackages']['pfblockerngdnsbl']['config'][$j]['infolist'] = "";
    //...
    $i = 0;
    foreach ($losdir as $elemento) {
        $config['installedpackages']['pfblockerngdnsbl']['config'][$j]['row'][$i]['format'] = 'auto';
        $config['installedpackages']['pfblockerngdnsbl']['config'][$j]['row'][$i]['state'] = 'Disabled'; //Enabled
        $config['installedpackages']['pfblockerngdnsbl']['config'][$j]['row'][$i]['url'] = "$elemento";
        $config['installedpackages']['pfblockerngdnsbl']['config'][$j]['row'][$i]['header'] = "sh2pfB_$i";
        $i++;
    }
    //...
    $config['installedpackages']['pfblockerngdnsbl']['config'][$j]['action'] = "unbound";
    $config['installedpackages']['pfblockerngdnsbl']['config'][$j]['cron'] = "Weekly";
    $config['installedpackages']['pfblockerngdnsbl']['config'][$j]['filter_alexa'] = "on";
    $config['installedpackages']['pfblockerngdnsbl']['config'][$j]['custom'] = "";
    $config['installedpackages']['pfblockerngdnsbl']['config'][$j]['custom_update'] = "disabled";
    print  "pfBlockerNG DNSBL feed List shallalist2pfpBlockerNG Import Completed...\n\n";
    write_config();
}

//Cron
//si no existe /usr/games/scripts lo creamos - if not exist /scripts create it
if(!is_dir('/usr/games/scripts')) {
  mkdir('/usr/games/scripts');
}
//si no existe /usr/games/scripts/cron-download-shallalist2pfpBlockerNG.sh lo creamos
if (!file_exists('/usr/games/scripts/cron-download-shallalist2pfpBlockerNG.sh')) {
 //bash
 $contenido = "#!/bin/sh\n"
        . "/bin/rm -rf /usr/games/BL\n"
        . "/bin/mkdir /usr/games/BL\n"
        . "/usr/bin/fetch -o /usr/games/BL http://www.shallalist.de/Downloads/shallalist.tar.gz\n"
        . "/usr/bin/tar -xf /usr/games/BL/shallalist.tar.gz --strip 1 -C /usr/games/BL\n"
        . "/bin/rm -rf /usr/games/BL/shallalist.tar.gz\n";
 file_put_contents("/usr/games/scripts/cron-download-shallalist2pfpBlockerNG.sh", $contenido);
 print_r("Create /usr/games/scripts/cron-download-shallalist2pfpBlockerNG.sh ... \n");

} else print_r("Already exists /usr/games/scripts/cron-download-shallalist2pfpBlockerNG.sh ... \n");
//existe Cron?
$j = 0;
$existecron = false;
while (!empty($config['cron']['item'][$j]['command'])) {
    $j++;
    //print_r($config['cron']['item'][$j]['command']."\n");
    if (strpos($config['cron']['item'][$j]['command'], "/bin/sh /usr/games/scripts/cron-download-shallalist2pfpBlockerNG.sh") !== false) {
        $existecron = true;
        print_r("Already exists cron for /bin/sh /usr/games/scripts/cron-download-shallalist2pfpBlockerNG.sh \n");
    }
}
//si no existe cron lo creamos a ejecutar como root cada domingo a las 06:06
if (!$existecron) {
    $config['cron']['item'][$j]['minute'] = "6";
    $config['cron']['item'][$j]['hour'] = "6";
    //$config['cron']['item'][$j]['mday'] = "*";
    //$config['cron']['item'][$j]['month'] = "*";
    $config['cron']['item'][$j]['wday'] = "7";
    $config['cron']['item'][$j]['who'] = "root";
    $config['cron']['item'][$j]['command'] = "/bin/sh /usr/games/scripts/cron-download-shallalist2pfpBlockerNG.sh";
    print_r("Create cron for /bin/sh /usr/games/scripts/cron-download-shallalist2pfpBlockerNG.sh ... \n\n");
    write_config();
}
print_r("You have to go to https://YOUR-IP-PFSENSE/pkg.php?xml=/pfblockerng/pfblockerng_dnsbl_lists.xml \n"
        . " Firewall > pfBlockerNG > DNSBL Feeds: and edit/put ON/OFF the Categories you wish \n"
        . "and Force Update update/reload DNSBL pfblockerNG \n\n");
print_r("The End :). By javcasta - htpps://javcasta.com \n");
?>

Y voila 🙂

(Visited 138 times, 1 visits today)

Liberado – Release – mail_package_platform_status.php – Notificador updates por mail

Libero un script: mail_package_platform_status.php , un notificador de actualizaciones de pfSense vía e-mail.

Ir a: https://www.javcasta.com/bounties/#notifier_package_plarform

Feliz solsticio de invierno 😉

 

 

(Visited 129 times, 1 visits today)

pfSense – release_old_dhcp_leases.php (Beta)

release_old_dhcp_leases.php: Un cli php script para borrar las entradas dhcpd leases con fecha de expiración menor a la fecha actual del sistema.

Se aloja en una carpeta, por ejemplo /scripts, y se ejecuta desde shell. El comando para añadirño a un cron seria

/usr/local/bin/php /scripts/release_old_dhcp_leases.php

Está en fase beta (es decir que lo he probado y me ha funcionado, pero conviene contrastarlo con más usuarios de pfSense, ver https://forum.pfsense.org/index.php?topic=122267.0)

El código:

<?php
/*
 * release_old_dhcp_leases.php
 * By @Javcasta - Javier Castañon - https://javcasta.com/ 
 */


$leasesfile = "/var/dhcpd/var/db/dhcpd.leases";
exec("cat /var/dhcpd/var/db/dhcpd.leases", $salida);

//echo "lineas: " . count($salida) . "\n";
$today = date('Y/m/d');

// Stop DHCPD
//killbyname("dhcpd");
echo "Stop dhcpd service... \n";
exec("/usr/local/sbin/pfSsh.php playback svc stop dhcpd");
sleep(5);

// Read existing leases
$newleases_contents = array();
$i = 0;
$marca = '}';

while ($i < count($salida)) {
	if (strpos($salida[$i],"lease ") !== false && strpos($salida[$i], " {") !== false ) {
		$posendsdate = $i+2;
		$endsdate = explode(" ", $salida[$posendsdate]);
		//echo ">>>>> " . $endsdate[4] . "\n";
		//si la fecha ends es < today NO
		if ($endsdate[4] > $today || $endsdate[4] == $today) {
			$newleases_contents[] = $salida[$i];
			/* Skip to the end of the lease declaration */
			do {
				//echo "vamos por $i: $salida[$i] \n";
				$i++;
				$newleases_contents[] = $salida[$i];			
			} while ($i < count($salida) && strpos($salida[$i], $marca) !== true);
		}
	} else {
		//$newleases_contents[] = $salida[$i];
	}
	$i++;
}
//print_r(array_values($newleases_contents));
$fd = fopen($leasesfile, 'w');
fwrite($fd, implode("\n", $newleases_contents));
fclose($fd);
echo "Start dhcpd service... \n";
exec("/usr/local/sbin/pfSsh.php playback svc start dhcpd"); 
?>

Y voila 🙂

(Visited 106 times, 1 visits today)

Monitorizar logs de pfSense con Nagios Log Server

Enlazando con http://www.javcasta.com/implementacion-de-maquina-virtual-de-nagios-log-server-e-instalacion-en-la-misma-de-nagios-core/

Con ese post veia cómo tener un Nagios Log Server y un Nagio Core en una misma máquina virtual. Ahora voy a monitorizar los logs del pfSense con el Nagios Log Server.

Tan simple cómo configurar en el pfSense, en el menú: Status > System Logs > Settings

En la sección: Remote Logging Options , habilitar:

Enable Remote Logging [x] Send log messages to remote syslog server

Indicando interfaz por donde enviar los logs, lo que queremos que envie al servidor de logs remoto y la IP:puerto del log server remoto

rsyslog

Y si todo ha sido correctamente configurado, en el dashboard del Nagios Log Server se deben de ver los logs del pfSense

rsyslog2

Y voila 🙂

(Visited 311 times, 1 visits today)

pfSense – Script: wol-dhcpleases.sh – Wake On Lan All dhcp leases

Enlazando con el post: http://www.javcasta.com/pfsense-wol-wake-on-lan/

captura-de-pantalla-de-2016-12-04-122221wol-dhcpleases.sh un shell script en pfSense para lanzar un wol a todas las entradas dhcp (dhcp leases) vía todas las direcciones de broadcast de sus interfaces .

#!/bin/sh
# wol-dhcpleases.sh
# wol all dhcp leases via all interfaces
# by javcasta - 2016 - https://javcasta.com

BROADCAST=$(ifconfig | grep broadcast | cut -d' ' -f 6)
DHCPLEASES=$(cat /var/dhcpd/var/db/dhcpd.leases | grep "hardware ethernet" | cut -d ' ' -f 5 | sort -u | sed "s|;||")
for LAMAC in $DHCPLEASES; do
   echo "wake on lan:  ${LAMAC}"
   for ELBROADCAST in $BROADCAST; do
	   /usr/local/bin/wol -i ${ELBROADCAST} ${LAMAC}
   done
done

Y voila 🙂

(Visited 59 times, 1 visits today)

pfSense Memory usage via shell – Obtener vía shell % memoria RAM usada en pfSense

captura-de-pantalla-de-2016-12-02-145217

Buceando en el código de /usr/local/www/includes/functions.inc he implementado una manera de obtener el % de ram usada en pfSense vía shell:

mem-used

[2.3.2-RELEASE][root@pfsense.localdomain]/scripts: echo `php -r “require(‘/etc/inc/functions.inc’);echo ‘% Memoria usada = ‘.round(get_single_sysctl(‘vm.stats.vm.v_page_count’)-get_single_sysctl(‘vm.stats.vm.v_inactive_count’)-get_single_sysctl(‘vm.stats.vm.v_cache_count’)-get_single_sysctl(‘vm.stats.vm.v_free_count’))*100/get_single_sysctl(‘vm.stats.vm.v_page_count’).’ ‘;”`
% Memoria usada = 8.2853002576452

El comando:

echo `php -r "require('/etc/inc/functions.inc');echo '% Memoria usada = '.round(get_single_sysctl('vm.stats.vm.v_page_count')-get_single_sysctl('vm.stats.vm.v_inactive_count')-get_single_sysctl('vm.stats.vm.v_cache_count')-get_single_sysctl('vm.stats.vm.v_free_count'))*100/get_single_sysctl('vm.stats.vm.v_page_count').' ';"`

O de forma más simplificada:

echo `php -r “require(‘/usr/local/www/includes/functions.inc.php’);echo mem_usage();”`

echo `php -r "require('/usr/local/www/includes/functions.inc.php');echo mem_usage();"`

Que coincide por lo indicado en el widget del dashboard

Y voila 🙂

(Visited 124 times, 1 visits today)

Implementación de máquina virtual de Nagios log Server e instalación en la misma de Nagios Core

1. Descargar OVA de Nagios Log Server:

https://assets.nagios.com/downloads/nagios-log-server/1/ovf/nagioslogserver-1.4.4-64.ova

1-download-vm-nagios-log-server

2. Abrir (importar) el OVA con VMware. (o VBox, etc)

2-open-vm-nagios-log-server

3. Iniciar la VM. Iniciar sesión en Nagios log server. root:nagiosls . Y configurar red.

3c-init-sesion

Si deseas cambiar la configuración de red, con lla utilidad system-config-network se hace de forma rápida y fácil.

 2a-system-config-network

Se puede acceder a la shell vía cliente ssh como root (root:nagiosls)

4 Instalamos Nagios Core desde la fuente.

Seguimos el doc de Nagios: Installing Nagios Core From Source.:

https://assets.nagios.com/downloads/nagioscore/docs/Installing_Nagios_Core_From_Source.pdf

 En lo que atañe a CentOS (la VM de Nagios log server viene en CentOS)

El guión de instalación:

# guión
# prerequisitos
yum install -y wget httpd php gcc glibc glibc-common gd gd-devel make net-snmp unzip
# download 
cd /tmp
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.2.3.tar.gz
wget https://nagios-plugins.org/download/nagios-plugins-2.1.4.tar.gz
# usuarios
#useradd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagios,nagcmd apache
# descomprimir
 tar zxvf nagios-4.2.3.tar.gz
tar zxvf nagios-plugins-2.1.4.tar.gz
# install
cd nagios-4.2.3
./configure --with-command-group=nagcmd 

make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf
cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

# start
/etc/init.d/nagios start
/etc/init.d/httpd start

# add usr for web gui and password
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

# install plugins
cd /tmp/nagios-plugins-2.1.2
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install

# nagios  services at boot
chkconfig --add nagios
chkconfig --level 35 nagios on
chkconfig --add httpd
chkconfig --level 35 httpd on

Abrimos un navegador con la ip de nagios http://<nagios-ip>, para terminar la instalación del Nagios Log Server (si tienes licencia es el momento de indicarla)

 2b-finish-nagios-log-server-install

Y ya se puede acceder a Nagios Core:

http://<your.nagios.server.ip>/nagios

2c-access-to-nagios

Ya tenemos Nagios Log Server y Nagios Core en la misma máquina virtual (eso sí, el Log server con licencia trial de 60 días 🙂 , pero para practicar, más que suficiente 🙂

Proximamente, cómo monitorizar un pfSense con Nagios Core/Log Server y definir nuestros comandos y scripts personalizados para monitorizar pfSense vía SNMP, etc …

Y  voila 🙂

(Visited 289 times, 1 visits today)

Activar SNMP en pfSense y consulta de cliente SNMP desde un Debian

Un post rápido sobre cómo activar SNMP en pfSense y cómo hacer una consulta SNMP desde un Debian al pfSense

Para activar el daemon SNMP en pfSense, ir a: Services > SNMP

Y habilitar (enable), configurar, indicar la o las interfaces donde va a escuchar el daemon SNMP (bind interface) y salvar

captura-de-pantalla-de-2016-11-23-144343

Ahora mi pfSense responderá a queries SNMP en su interfaz LAN

Desde un Debian, instalo snmp

apt-get update

apt-get install snmp

apt-get install snmp-mibs-downloader

download-mibs

Y efectuo un SNMP querie a la rama public a la ip de la interfaz LAN del pfSense

snmpwalk -v1 -cpublic 192.168.0.254 | more

captura-de-pantalla-de-2016-11-23-144530

Y voila 🙂

(Visited 75 times, 1 visits today)

pfSense script getIblockListByCategory.sh – Obtener listas iBlockLists en categorias

captura-de-pantalla-de-2016-11-20-141015

getIblockListByCategory.sh , un shell script testeado en pfSense 2.3.2_1, para descargar las listas (no de pago) de IblockLists en ficheros gz con el nombre de la categoria (spyware.gz, webexploit.gz, etc)

captura-de-pantalla-de-2016-11-20-140931

Se aloja en un directorio (por ejemplo /scripts) y se ejecuta con

sh /scripts/getIblockListByCategory.sh

Y descarga los ficheros en /tmp/iblocklist/

[2.3.2-RELEASE][root@pfSense232a.localdomain]/scripts: ls -l /tmp/iblocklist/                  total 7188
-rw-r--r--  1 root  wheel     5052 Nov 20 00:01 DROP.gz
-rw-r--r--  1 root  wheel       80 Nov 19 23:01 HOSTS.gz
-rw-r--r--  1 root  wheel    67690 Nov 20 02:02 Malicious.gz
-rw-r--r--  1 root  wheel    12946 Nov 19 19:07 Microsoft.gz
-rw-r--r--  1 root  wheel      231 Nov 19 19:50 Palevo.gz
-rw-r--r--  1 root  wheel   178438 Nov 19 15:00 Pedophiles.gz
-rw-r--r--  1 root  wheel      769 Nov 20 09:15 SpyEye.gz
-rw-r--r--  1 root  wheel     1698 Nov 19 15:20 ZeuS.gz
-rw-r--r--  1 root  wheel    47520 Nov 19 19:48 ads.gz
-rw-r--r--  1 root  wheel   114074 Nov 20 03:01 adservers.gz
-rw-r--r--  1 root  wheel   445274 Nov 19 19:45 badpeers.gz
-rw-r--r--  1 root  wheel    18010 Nov 19 16:11 bogon.gz
-rw-r--r--  1 root  wheel    46173 Nov 20 13:30 cruzitwebattacks.gz
-rw-r--r--  1 root  wheel      625 Nov 19 19:43 dshield.gz
-rw-r--r--  1 root  wheel   758263 Nov 19 20:06 edu.gz
-rw-r--r--  1 root  wheel     3946 Nov 20 02:43 exclusions.gz
-rw-r--r--  1 root  wheel      165 Nov 20 05:52 fornonlancomputers.gz
-rw-r--r--  1 root  wheel     3432 Nov 19 20:04 forumspam.gz
-rw-r--r--  1 root  wheel     3334 Nov 19 14:40 hijacked.gz
-rw-r--r--  1 root  wheel      114 Nov 20 04:21 iana-multicast.gz
-rw-r--r--  1 root  wheel      406 Nov 20 09:49 iana-private.gz
-rw-r--r--  1 root  wheel      283 Nov 19 15:48 iana-reserved.gz
-rw-r--r--  1 root  wheel  3665537 Nov 20 08:24 level1.gz
-rw-r--r--  1 root  wheel  1321060 Nov 19 18:12 level2.gz
-rw-r--r--  1 root  wheel   268600 Nov 19 20:35 level3.gz
-rw-r--r--  1 root  wheel     2537 Nov 19 21:24 malc0de.gz
-rw-r--r--  1 root  wheel       80 Nov 19 16:43 malwaredomainlist.gz
-rw-r--r--  1 root  wheel    37023 Nov 19 23:13 proxy.gz
-rw-r--r--  1 root  wheel     5314 Nov 20 03:35 rangetest.gz
-rw-r--r--  1 root  wheel     9350 Nov 19 19:55 spider.gz
-rw-r--r--  1 root  wheel    50334 Nov 20 04:36 spyware.gz
-rw-r--r--  1 root  wheel    19784 Nov 20 02:37 webexploit.gz

El código de getIblockListByCategory.sh

#!/bin/sh
# getIblockListByCategory.sh
# get iblocklist lists by Category
# @javcasta - Javier Casta?non - https://javcasta.com/ - 2016

if [ ! -d /tmp/iblocklist ]; then
 mkdir /tmp/iblocklist
fi

#categories
for CATEGORY in `curl -s https://www.iblocklist.com/lists.php | egrep -A1 '>*</a></span></td>' | cut -d '>' -f 5 | cut -d '<' -f 1`; do
	CATEGORIES="${CATEGORIES} $CATEGORY"
done

J=1
#download
for NAME in `curl -s https://www.iblocklist.com/lists.php | egrep -A1 '>*</a></span></td>' | egrep -o '[a-z]{20}'`; do
	MYID='$'$J
	#echo $J
	CATEGORY=`echo ${CATEGORIES} | awk -F' -- ' "{ print $MYID }" | tr -d '[[:space:]]'`
	echo $CATEGORY
	J=$((J+1))
	fetch -q -o /tmp/iblocklist/${CATEGORY}.gz "http://list.iblocklist.com/?list=${NAME}&fileformat=p2p&archiveformat=gz"
done

Y voila 🙂

(Visited 178 times, 1 visits today)

Scripting – pfSense-install-FreeBSD-Package.sh – Instalar paquete FreeBSD en pfSense 2.3.x

Referencia: pfSense-install-FreeBSD-Package.sh – Instalar paquete FreeBSD en pfSense 2.3.x

Enlazando con el post:pfSense 2.3 – Instalar paquetes FreeBSD – pscp (putty-tools)

Un shell script: pfSense-install-FreeBSD-Package.sh

Para instalar paquetes de FreeBSD en pfSense.

#!/bin/sh
# pfSense-install-FreeBSD-Package.sh
# @javcasta – Javier Casta?non – 2016 – https://javcasta.com/
###############################################################
# Install FreeBSD package at pfSense 2.3
# Use # sh pfSense-install-FreeBSD-Package.sh <FreeBSD-Package>
###############################################################

# FreeBSD: { enabled: no } =>  FreeBSD: { enabled: yes }
# /usr/local/share/pfSense/pkg/repos/pfSense-repo.conf
# /usr/local/etc/pkg/repos/FreeBSD.conf

if [ $# -eq 0 ]
then
echo “No package supplied”
exit 1
fi

FAUX=”/tmp/fauxf2b.tmp”
FILE1=”/usr/local/share/pfSense/pkg/repos/pfSense-repo.conf”
cp $FILE1 /usr/local/share/pfSense/pkg/repos/pfSense-repo.conf.back
FILE2=”/usr/local/etc/pkg/repos/FreeBSD.conf”
cp $FILE2 /usr/local/etc/pkg/repos/FreeBSD.conf.back
NOFREEBSD=”FreeBSD: { enabled: no }”
YESFREEBSD=”FreeBSD: { enabled: yes }”
sed “s|$NOFREEBSD|$YESFREEBSD|” $FILE1  > $FAUX
cp $FAUX $FILE1
sed “s|$NOFREEBSD|$YESFREEBSD|” $FILE2  > $FAUX
cp $FAUX $FILE2

pkg bootstrap
pkg update
yes | pkg lock pkg
pkg lock pfSense-2.3.2
pkg lock dnsmasq-devel
echo ” Install package $1″
yes | pkg install $1
yes | pkg unlock pkg
pkg unlock pfSense-2.3.2
pkg unlock dnsmasq-devel
#rehash

#back
sed “s|$YESFREEBSD|$NOFREEBSD|” $FILE1  > $FAUX
cp $FAUX $FILE1
sed “s|$YESFREEBSD|$NOFREEBSD|” $FILE2  > $FAUX
cp $FAUX $FILE2

La captura de pantalla anterior es para el paquete FreeBSD py27-fail2ban

sh pfSense-install-FreeBSD-Package.sh py27-fail2ban

Y voila 🙂


Aviso de un Admin del foro

https://forum.pfsense.org/index.php?topic=121354.msg670799#msg670799

    Do not do this. We don’t allow FreeBSD packages to be installed directly with good reason. It’s only a matter of time before something gets screwed up in the dependencies or a package gets replaced and the whole system is hosed, or it’ll break wildly on upgrade.

Que viene a decir:

    No hacer esto. No permitimos que los paquetes de FreeBSD se instalen directamente por una buena razón. Es sólo cuestión de tiempo antes de que algo se fastidie en las dependencias o un paquete se reemplaze y todo el sistema esté mal, o se romperá salvajemente en la actualización.

 Lo cual tiene su lógica, ya que las dependencias , pfSense las buscará en sus repositorios y no en los de FreeBSD, ya que pfSense es una distro personalizada de FreeBSD

Así que las pruebas nunca en producción o bajo la responsabilidad de cada uno

(Visited 71 times, 1 visits today)