Archive for the 'Scripts' Category

Ejecutar la Shell de Bash en Windows mediante Cmder

cmder

Hace poco fue noticia el acuerdo entre Canonical y Microsoft para que se pueda utilizar Bash en los sistemas Windows como puede ser Windows 10. La integración será tan completa que incluso se podrán ejecutar paquetes de linux.

Pero de todas formas a fecha actual y aunque no usemos Windows 10, tambien podemos
disponer de una shell Bash en Windows mediante diferentes alternativas como pueden ser Cygwin, Clientes ssh como MobaXterm que ya llevan Cygwin integrado, Msys2, Git para Windows (que proporciona emulación bash y herramientas y comandos unix) y la opción que comentaré hoy aquí mediante Cmder.

Cmder es un potente emulador de consola para Windows. Si queremos disponer de los principales comandos unix desde windows nos descargamos la version con git para windows (aproximadamente unos 76 Mb) desde su pagina principal.
La descomprimimos y se crea un directorio Cmder. Ahí ya podemos ejecutar el binario principal con lo que se abre la consola.
Tiene varias opciones de personalización y permite el uso de tabs.
Pero lo principal que comentabamos es que ya podemos ejecutar los principales comandos unix en windows como pueden ser p.ej: “ls” o “ps” O incluso editar y ejecutar nuestros propios scrips en bash.
Podriamos p.ej usar “vim” como editor de texto, escribir nuestro shell script, darle permisos de ejecución y luego ejecutarlo con: “bash <nombre script>”.

sshpass: Enviar el password desde la linea de comandos en conexiones ssh

Hemos visto muchas formas de automatizar las conexiones ssh, desde compartir las claves publicas y privadas, o usar scripts de utilidades como sshput, expect-lite o expect. Hoy otra opción utilizando el comando sshpass. Para quien no se quiera complicar mucho, Este comando nos permite enviar la password cuando establecemos una conexion ssh.

Para instalarlo en ubuntu (o sistemas derivados) ejecutamos: sudo apt-get install sshpass

Despues cuando queramos conectar automaticamente a un servidor remoto mediante ssh, podemos usar la siguiente sintaxis:

sshpass -p <password del host remoto> ssh <usuario remoto>@<host remoto>

Mas información | Desde Linux

 

Substring de cadenas en Bash

Substring

Tantos años programando shell scripts y esto era algo que no conocía y que implementaba de otra manera. Si que es verdad el dicho “nunca te acostarás sin aprender algo nuevo”. Ya no se me olvidará, pues es muy sencillo. Si tienes una variable puedes obtener un substring de la misma con la forma: ${nombre_variable:posicion de inicio:posicion de fin}
De todas formas, una muy buena guia para aprender y siempre recomendable es: advanced bash scripting guide.

Ejecutar PLSQL desde shell script y guardar los resultados en variables

oracle

En dbaspot encuentro un buen ejemplo de script de como ejecutar un procedimiento PLSQL desde bash y como almacenar los resultados de las consultas en variables. Éste seria un ejemplo (adaptado para usar mi base de datos Oracle XE):


#!/bin/bash

#OUTPUT=$(sqlplus -s '/ as sysdba' <<-EOF
OUTPUT=$(sqlplus -s system/manager@XE <<-EOF
set heading off feedback off serveroutput on trimout on pagesize 0

select instance_name from v\$instance;
select version from v\$instance;

declare
i number := 0;
begin
while i < 3 loop
dbms_output.put_line('Parametro_PLSQL_' || i);
i := i+1;
end loop;
end;
/
EOF
)

# Sin dejar espacios pq los espacios son los nuevos parametros

INSTANCE=$(echo $OUTPUT | awk '{ print $1 }')
VERSION=$(echo $OUTPUT | awk '{ print $2 }')
ARG1=$(echo $OUTPUT | awk '{ print $3 }')
ARG2=$(echo $OUTPUT | awk '{ print $4 }')
ARG3=$(echo $OUTPUT | awk '{ print $5 }')

echo "Database: $INSTANCE":wr
echo "Version: $VERSION"
echo "Arg1: $ARG1"
echo "Arg2: $ARG2"
echo "Arg3: $ARG3"

Aqui puedes adaptarlo para tus propios ejemplos. Lo más importante la cadena de conexión, yo al usar Oracle XE tengo (system/manager@XE), en tu base de datos pon tu cadena usuario/password@SID. Despues que tambien los parametros devueltos no tengan espacios, pues al asignarlos a variables, el espacio es utilizado como separador. En el script hay una parte donde se devuelve una columna directamente de una select y esta es asignada a una variable de la shell, y otra parte donde se escribe el parametro con el paquete dbms_output.

El comando “column”, ése gran desconocido

Éste pequeño tip te vendrá muy bien cuando programes en bash shell script p.ej y necesites mostrar de forma tabulada una serie de columnas de un listado. Hay varias formas de hacerlo, pero muchas veces te complicas con funciones o añadiendo espacios adicionales, controlando la longitud de las cadenas, cuando lo que buscas es algo más básico. Para ello podemos utilizar el comando “column” mediante una pipe.

Ejemplo: ejecuta desde la consola:

mount

Que te muestra la lista de puntos de montaje. Pero sale un poquito desorganizado, no?. Prueba ahora con:

mount | column -t

Mejor no?. Y por qué no usarlo con nuestras propios ficheros. P.ej crea un fichero llamado “ejemplo.txt” con el siguiente contenido:


aaa 12 1234 c
bbbbbbb 2222 234 cc
cccc 2345 333333333 ddddd

Para imprimirlo (por consola) de manera más formateada, puedes ejecutar:

cat ejemplo.txt | column -t

Grubeco: Script para recuperar de manera automatica el Grub tras instalar Windows

No probado y no es mi caso (asi que el que lo necesite que lo ejecute bajo su propio riesgo) pero esto pasa a menudo cuando tienes tu sistema Linux perfectamente instalado y decides instalar Windows en cualquiera de sus variantes (XP, Win7, etc). Entonces las entradas del Grub se pierden y ya no te deja arrancar con Linux, no te aparece el tipico menu donde te permite seleccionar con que sistema operativo quieres arrancar.
La principal forma de solucionar este problema es reconstruir las entradas del Grub. Para ello habitualmente inicias con un Live CD de Linux, montas la partición de Linux y reinstalas el gestor de arranque.
Para facilitar este proceso se proporciona el siguiente script:


#!/bin/bash 
#Escrito por T383NH3, Blog: MachGeek.wordpress.com 
#Inicia desde el LiveCD, luego asignale permisos y ejecuta el script 
#El script solo esta adaptado para un solo Linux sin home, de lo contrario no funcionara. 
particion=`sudo fdisk -l | egrep "Linux$" | cut -d" " -f1` 
sudo mkdir /mnt/Linux 
sudo mount $particion /mnt/Linux 
sudo grub-install --root-directory=/mnt/Linux /dev/sda 
if [[ $? -eq 0 ]] 
then echo "Operacion completada, al reiniciar no vera el grub, pero si iniciara Ubuntu, luego de esto ejecute en un terminal sudo update-grub y listo!" 
exit 0 
else 
echo "Error, Operacion no finalizada" 
exit 1 
fi 

Cuando esto suceda, despues de instalar windows, inicia desde el LiveCD de Ubuntu, guarda este script con el nombre “grubeco”, dale permisos de ejecución al script con chmod +x grubreco y ejecútalo: ./grubreco, reinicias entonces e inicias ubuntu, y finalmente luego en la terminal escribes sudo update-grub.

Nota importante: El script solo esta adaptado para un solo Linux sin home, de lo contrario no funcionara.

Enlace | Taringa

Los códigos de color en Bash

Por si estás programando algun script en bash o necesitar imprimir algun texto en consola de manera especial y no recuerdas cual era la combinación, El siguiente script (color-bash.sh) te imprime una tabla de colores en bash:

#!/bin/bash

# prints a color table of 8bg * 8fg * 2 states (regular/bold)
echo
echo Table for 16-color terminal escape sequences.
echo Replace ESC with \\033 in bash.
echo
echo "Background | Foreground colors"
echo "---------------------------------------------------------------------"
for((bg=40;bg<=47;bg++)); do
	for((bold=0;bold<=1;bold++)) do
		echo -en "\033[0m"" ESC[${bg}m   | "
		for((fg=30;fg<=37;fg++)); do
			if [ $bold == "0" ]; then
				echo -en "\033[${bg}m\033[${fg}m [${fg}m  "
			else
				echo -en "\033[${bg}m\033[1;${fg}m [1;${fg}m"
			fi
		done
		echo -e "\033[0m"
	done
	echo "--------------------------------------------------------------------- "
done

echo
echo

O tambien puedes descargarlo:

wget dev.redcodenetwork.ro/public/shell/color-bash.sh
chmod +x color-bash.sh
./color-bash.sh

Enlace | Red code | Relacionado | Top 7 de prompts para la terminal





¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map
julio 2016
L M X J V S D
« Jun    
 123
45678910
11121314151617
18192021222324
25262728293031

Blog Stats

  • 29,165,031 hits

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 1.107 seguidores