Servidor

Shutdown a un Windows

Posted in Linux, Servidor, Windows, utilidades on Diciembre 28th, 2009 by admin – Be the first to comment

Me ha ocurrido que tengo algunas máquinas con Windows en la red y necesito en algún momento reiniciarlas o apagarlas, para esto se puede hacer uso de los servicios RPC de Windows.

¿Y como funciona esto?

Primero y fundamental hay que tener instalado “Samba“. Cuando instalamos este programa se nos instala un comando “net” que podemos llamar desde consola, por ejemplo:

net rpc shutdown -t 600 -C "El administrador esta apagando el equipo" -I 192.168.0.2 -U Administrador

Donde el parámetro “-t” es el tiempo de cuenta atrás para ejecutar la acción, esta en segundos, en el ejemplo son 10 minutos (600 segundos). El “-C” es el comentario. La IP que ponemos es la de la máquina de red que queremos apagar. El último parámetro “-U” es el usuario de la máquina Windows este debe ser un Administrador que pueda apagar el equipo.

Antes de ejecutar la acción nos va a pedir la contraseña del administrador. La contraseña la podemos pasar por linea de comando si queremos por ejemplo hacer un script para apagar las máquinas de la red y que no nos pida la contraseña de todas las máquinas, se pasa poniendo después del usuario el símbolo “%” y luego la contraseña (sin espacios) por ejemplo “administrador%micontraseña”.

Nota: si el administrador no tiene contraseña debemos permitir el uso de contraseñas en blanco para iniciar sesión por red, esto lo podemos hacer desde “Panel de control/Herramientas Administrativas/Directiva de seguridad local/Directivas locales/Opciones de seguridad”

Si queremos reinciar agregamos el parametro “-r” y para forzar el cierre podemos agregar el comando “-f” (cuidado con este ultimo puede hacer perder información).

Si queremos cancelar un apagado o reiniciado desde la máquina con Linux podemos ejecutar:

net rpc abortshutdown -I 192.168.0.2 -U Administrador

Si lo queremos cancelar desde la máquina Windows desde la consola ejecutamos:

shutdown -a

Para que funcione debemos haber iniciado sesión con la cuenta de un administrador.

¿Que linux tengo?

Posted in Linux, Servidor, utilidades on Diciembre 28th, 2009 by admin – Be the first to comment

Muchas veces te preguntaras entre tantas actualizaciones o cuando vas a una máquina que no conoces ¿Que distro y versión de linux tiene?

Para solucionar esta incognita podemos ejecutar en la consola:

cat /etc/issue.net

Lo cual en mi caso me devolvio:

Ubuntu 8.04.3 LTS

Service v2

Posted in Linux, Servidor, utilidades on Agosto 7th, 2009 by admin – Be the first to comment

La verdad me ha resultado muy útil el script del “service” así que lo he modificado para agregarle un detalle, con esta nueva modificación se pueden iniciar varios servicios en una sola linea por ejemplo:

service apache2 mysql ssh start

En este caso estamos iniciando el servidor apache, mysql y el ssh todo en una linea.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#! /bin/bash
 
nparam=$#
 
if [ $nparam -lt 2 ];
then
 
	echo "Faltan parametros, por los menos debe especificar un servicio (/etc/init.d/) y una accion (start, stop, status, restart)"
 
fi
 
nserv=$(($nparam - 1))
IFS=','
 
for ((i=1; i<=$nserv; i++));
do
 
	service=`echo "$*"| cut -d ',' -f $i`
	ls /etc/init.d/$service > /dev/null  2> /dev/null
 
	if [ $? -gt 0 ];
	then
 
		echo "El servicio $service no existe"
		exit
 
	fi
 
done
 
action=`echo "$*"|cut -d ',' -f $(($nserv + 1))`
 
for ((i=1;i<=$nserv;i++));
do
 
	service=`echo "$*"| cut -d ',' -f $i`
	echo $service
	sudo /etc/init.d/$service $action
 
done

El único problema que encontré fue para listar los parámetros que estoy usando un “for” y:

service=`echo "$*"| cut -d ',' -f $i`

Si alguien conoce una forma mas elegante por favor avise.

Esto lo probé en Ubuntu 8.04.

Compartir internet con iptables y messenger

Posted in Configuración, Linux, Servidor on Julio 10th, 2009 by admin – Be the first to comment

Para compartir Internet en una LAN, podemos hacer lo siguiente:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE

En mi caso “ppp0″ porque tengo un modem-usb, para los que tengan ethernet podria ser “eth0″, depende de la configuración Linux y del hardware que tengan. La IP “192.168.1.0″ es la de la red LAN y el “/24″ es la mascara “255.255.255.0″.

Con esto toda la LAN podía navegar por Internet libremente, el problema apareció en mi caso cuando quisieron iniciar sesión en el “MSN Messenger”. Luego de buscar un rato en Internet, me choque con la solución y para no entrar en mucho detalle agregue esta regla a iptables:

iptables -I FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

Y todos felices.

Esto lo probe en Ubuntu 8.04.

Un “service” en Ubuntu

Posted in Linux, Servidor, utilidades on Junio 24th, 2009 by admin – Be the first to comment

“service” es un script que viene con las distribuciones de “Red Hat”, “Fedora” y sus derivados, que es muy útil para manipular los servicios (iniciar, detener, reiniciar). Lo que hice fue escribir mi propio script para manipular los servicios en Ubuntu.

Acá les dejo el código fuente (perdon por la indentación pero el wordpress no me deja):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#! /bin/sh
 
comando=$1
accion=$2
 
if [ "$comando" = "" ];
then
	echo "Falta el nombre del servicio"
	exit
fi
 
ls /etc/init.d/$comando 2> /dev/null
 
if [ $? -gt 0 ];
then
	echo "El servicio no existe"
	exit
fi
 
if [ "$accion" = "" ];
then
	echo "Falta la accion start/stop/restart/status"
	exit
fi
 
sudo /etc/init.d/$comando $accion

Para usarlo pueden crear el archivo usando:

vim service

Y pegan el código fuente dentro, también pueden crear el archivo por otros medios (por ejemplo usando gedit)

Luego le damos permisos de ejecución:

chmod +x service

Y como root (sudo -s) copiamos el script a:

cp service /usr/bin/

Y listo ahora podemos entrar desde una terminal y probarlo:

service apache2 start

En este caso estamos poniendo a correr apache, para ver una lista de todos los servicios disponibles en nuestras máquinas podemos hacer:

ls /etc/init.d

Yo lo he probado en Ubuntu 8.04, si alguien lo prueba en alguna otra versión de Ubuntu y encuentra problemas avisen o envien las correcciones del script.