Script para montar compartidos windows

19 05 2010

Desde Ubuntu (Linux) es mucho mas dificil montar archivos compartidos desde Windows y mucho mas cuando la version es Windows 7, por su nuevo sistema de compartido.

Para ello me hecho otro Script (si, otro a la lista) utilizando Python (si si me gusta Python para scripts), lo que hice fue envolver el montado del compartido pero esta vez si tener que scribir el password del usuario para conectarse a la vista de todos (eso mal, muy mal 😦 ).


#!/usr/bin/env python

import getpass, getopt, sys, os

__author__ = "Edder Rojas <edder.rojas@gmail.com"
__version__ = "0.2"

class SmbMount():

    def __init__(self, mnt_src, mnt_dest, username, password):
        self.mnt_src = mnt_src
        
        if not os.path.exists(mnt_dest):
            raise IOError("Path doesn't exist")
            
        self.mnt_dest = mnt_dest
        self.username = username
        self.password = password
        self.user = getpass.getuser()
        
    def mount(self):
        command =  "sudo smbmount " 
        command += self.mnt_src + " " 
        command += self.mnt_dest + " "
        command += "-o user=" + self.username + ","
        command += "pass=" + self.password + ","
        command += "uid=" + self.user + ","
        command += "iocharset=utf8"
        
        result = os.system(command)


if __name__ == "__main__":
    args = sys.argv
    if ( len(args) < 4 ):
        print (
                args[0].replace("./", "").split("/")[-1] + " " 
                + __version__
                + " <remote folder> <mount folder> <username>"
               )
    else:
        mnt_src = args[1]
        mnt_dest = args[2]
        username = args[3]
        password = getpass.getpass()
        smbMount = SmbMount(mnt_src, mnt_dest, username, password)
        smbMount.mount()

Basicamente hace de wrapper para smbmount y le da permisos al usuario actual para poder escribir, leer y todo el asunto. Algo a notar es que necesita el comando smbmount, además permisos de Root y por ultimo una carpeta de destino; mi conveción para esto, yo uso la carpeta /media y creo una carpeta con el mismo nombre del maquina a la que me estoy conectado y luego le doy permisos a mi usuario para usarlo:

mkdir /media/WinTarro
chown usuario.grupo /media/WinTarro

Ya con eso se podria usar el comando.

Anuncios




Que conexiones tienes abiertas con tu netstat

22 10 2009

Después de un tiempo otra vez estoy de vuelta, con tanto afán con las Clases, el trabajo, en fin tantas cosas por hacer y APRENDER en tan poco tiempo.

Ultimamente me han dado ganas de aprender un poco sobre pruebas de penetración, conocer como está mi red (y la de los demas) por lo que mi dije a mi mismo porque no?

De acuerdo a estoy voy a preparar una serie de guías rápidas nada muy elaborado para aprender un poco sobre redes y como sacarle el máximo provecho.

Primero y muy importante, tener Linux o Mac si te gusta lo fancy (para windows pueden usar cygwin), netstat es una utilidad que viene por defecto en cada sistema (o debería) que es útil para esos dias que te preguntas cuantas conexiones tendré abiertas? la forma es muy fácil de averiguar, antes de ejecutar cualquier comando de redes es bueno tener privilegios de root (administrador para los que no saben 😛 ), ya como root dejamos caer el comando:

netstat -pnat | grep ESTABLISHED

Explico brevememente, el parametro -p tiene la función de mostrar el nombre y el pid del programa (ayuda mucho a identificar que pasa con ese puerto). Siguiente parametro -n éste muestra ips. y los dos ultimos -a que muestra los sockets que se escuchan y los que nos se escuchan (he aqui el filtro con Grep), -t se refiere a tcp.

Le hago un pipe a Grep para que filtre los puertos y solo me muestre los que esten conectados (ESTABLISHED) y con eso es todo, ya saben cuantas y cuales aplicaciones están conectadas actualmente.

Si desean (y son muy Geeks) pueden crear un script con watch o bien hacen un Script y se lo pasan a conky para que muestre las conexiones abiertas, opciones existen y muchas 😀





Un script para buscar en wikipedia

31 08 2009

Revisando como siempre mis feeds me encontré un script muy fácil de usar para buscar en la wikipedia (inglés) desde la línea de comandos


#!/bin/sh
dig +short txt ${1}.wp.dg.cx

via | www.commandlinefu.com





Autenticando Trac con multiples proyectos usando PAM

2 06 2009

Una forma de facilitar la vida es tener un sistema de autenticacion general para el sistema, por lo que me tope con PAM que practicamente utiliza los mismos usuarios del sistema (linux) para autenticar, en este caso vamos a usar el modulo para Apache, es necesario instalar los paquetes necesarios:

sudo aptitude install libapache2-mod-auth-pam libapache2-mod-auth-sys-group

Luego en la configuracion del apache para sitio default, tal y como lo hable en otro post, hay que agregar el siguiente apartado:

<LocationMatch "/projects/[[:alnum:]]+/login">
AuthPAM_Enabled On
AuthType Basic
AuthName "Trac"
AuthUserFile /etc/shadow
Require valid-user
Require group developers
</LocationMatch>

Es necesario darle permisos a Apache para que pueda leer los archivos de usuarios, o de lo contrario nunca va a autenticar:

sudo adduser www-data shadow

Eso solo le da permiso de lectura, es necesario reiniciar el servidor de apache para que surta efecto, otra cosa es que si el usuario no pertenece a el grupo developers o el que se haya definido no va a poder autenticar tampoco.





Cambiar el editor por default en consola

21 10 2008

Depués de un tiempo me acostumbre a utilizar vim, es un buen editor es poderoso si se hace el tutorial y se aprende lo básico, el cual hay mucha información, tanto me acostumbre a vim y su resaltado de sintaxis que no puedo vivir si él, para instalarlo y configurarlo yo ya había hecho una entrada.

En el trabajo nos cambiaron las computadoras por lo que me toco reinstalar ubuntu, 30 minutos y ya estaba todo instalado, mientras me dedicaba a pasar mi información, tuve que regenerar unos crons que habia hecho para un script que te recuerda la hora.

Pero para mi sorpresa me encontré que el editor para modificar los crontab era nano, ya este editor no me llena y busqué la manera de volver a utilizar vim y para mi sorpresa es muy sencillo, inclusive si alguien más al contrario mio no le gusta el vim:

sudo update-alternatives --config editor

te las siguientes opciones, el cual uno escoge la que más le guste:

There are 4 alternatives which provide `editor’.

Selection    Alternative
-----------------------------------------------
1    /usr/bin/vim.tiny
2    /bin/ed
*+        3    /bin/nano
4    /usr/bin/vim.basic
Press enter to keep the default[*], or type selection number: 4
Using '/usr/bin/vim.basic' to provide 'editor'.




Script en python para hacer respaldos

5 10 2008

Ultimamente me ha interesado bastante python tanto asi, que me di la tarea de ir haciendo programitas (scripts) que hagan cosas automaticamente por mi.

Unas de las ideas que se me presentó es hacer un respaldo, ya que en la computadora que tengo en el trabajo ultimamente me ha dado problemas, creo que es el disco duro que está en las últimas, por dicha nos van a cambiar la maquinas 😀

Bueno volviendo al tema, me dieron acceso (ssh) a otro maquina para que subiera mis respaldos, como un respaldo es algo que se hace monotonamente todo el tiempo decidi hacer el script pero en python, normalmente estos tipos de scripts se hacen en shell (bash, sh, awk, perl, etc), personalmente me gusta bastante python, por lo que investigue como hacer llamadas al sistema y éste es el resultado:

import os

# Definicion de la variables que para preconfigurar
backupDir = '/home/edder/Backups/'
backupUser = 'backup'
backupPass = '*******'
summary = ""
backupDest = 'edder@192.168.0.x:/home/edder/backups/'
webroot = '/var/www/'

#funcion que ejecuta un comando y devuelve el resultado
def run_command(command, message):
	results = os.system(command)

	if results == 0:
		return message + '\n'
	else:
		return str(results) + "\n"

# comando y mensaje que hace un respaldo de mysql
command = 'mysqldump -u ' + backupUser + ' -p'+ backupPass + ' website > ' + backupDir + 'website.sql'
message = "Backup completed of the database\n"
summary += run_command(command, message)

#comando que respalda un website (apache) en un tar.gz
command = 'tar -pzcf ' + backupDir + '/website.tar.gz ' + webroot+ 'website'
message = "Backup of page website completed\n"
summary += run_command(command, message)

# comando que copia los respaldos via ssh a otra maquina via rsync
command = 'rsync -avz ' + backupDir + ' ' + backupDest
message = "Backup stored in the remote computer\n"
summary += run_command(command, message)

# los resultados obtenidos
print summary

Al script le falta pulir pero se entiene la esencia de lo que hace 😉





Script que te recuerda la hora

8 08 2008

Me pasa bastante que programando se me van las horas volando, lo que se ocurrio para recordar que hora es, crear un script que me recuerde que hora es 😛

Primero que todo se necesita el comando notify-send que es como un popup (cuando ubuntu te avisa que tiene actualzaciones), se instala desde los repositorios:

sudo aptitude install libnotify-bin

Luego crear un archivo donde va a estar el script 😛 , a mi gusto siempre creo una carpeta dentro de mi home que se llama Scripts donde se pueden crear todas lo que nos plazca 😀

gedit /home/<usuario>/Scripts/time_reminder

Nota: Hay que reemplar <usuario> por tu usuario.

Insertamos el siguiente codigo dentro:

#!/bin/bash

TITLE="Hora actual"
ICON="appointment"
MSG="Son las $(date +%r)"
export DISPLAY=:0 && \
notify-send --icon="$ICON" "$TITLE" "$MSG" && \
aplay /usr/share/sounds/ekiga/voicemail.wav

Explico cada linea:

  • La primera linea en cada shell script dices donde esta el interprete (el que va a ejecutar tu script)
  • La linea TITLE que se desea fijar en el popup
  • La linea ICON, ésta linea tiene truco, ese nombre que puse ahi se debe que en la carpeta /usr/share/icons/Tango/34×34/ (yo uso tango puede ser Tanguerine) tienen nombres de iconos que usa el sistema (Gnome default en ubuntu) el cual seleccione uno que concuerde con mi objetivo, no se necesita poner toda la ruta ni la extesion.
  • La linea de MSG es la hora que quiero mostrar y recordar 😉
  • luego viene el comando export…., lo que hace es seleccionar la pantalla actual porque las tareas (mas adelante explico) programadas no entienden de comando que tengan que ver con interfaces gráficas, si se tienen dos monitores ese comando tiene que cambiar para que concuerde.
  • La siguiente linea es el popup, que es donde mostramos el mensaje con las variables que anteriormente definimos.
  • por ultimo un sonido de recordatorio, en ubuntu esos vienen por default al menos que se haya desinstalado Ekiga, el cua en la carpeta /usr/share/sounds/ hay varios donde escoger.

Ahora se le da al script permisos de ejecucion:

chmod +x /home/<usuario>/Scripts/time_reminder

Ahora solo falta ejecutar el script cada cierto tiempo, para eso está crontab y se modifica la lista del usuario nuestro:

crontab -e

Para ingresar la linea se presiona la tecla insert o bien la letra i

00 * * * * /home/edder/Scripts/time_reminder

Se preciona Escape luego :wq, con eso se sale del editor y lo que quere decir esos 00 es que se va a ejecutar cada hora, se puede modificar a 30 para que se ejecute cada 30 minutos.

Con eso solo hace falta esperar 😉