|
Mostrar Temas
|
Páginas: [1]
|
1
|
Programación / Scripting / [Bash] Ayuda con script para leer fichero
|
en: 13 Febrero 2014, 00:20 am
|
Mi situación es la siguiente: En el fichero A tengo una lista con 5 ítem: casa reloj auto bomba cebra Lo que quiero hacer es colocar en el fichero B esa lista y agregando una linea cada 2 ítem. ----- casa reloj ----- auto bomba ----- cebra Me prepare un código pero no estoy pudiendo mantener la separación de a 2, ya que lee todo el fichero A completo. #!/bin/bash FICHERO="/tmp/datos" if [ -f $FICHERO ] then echo "Obteniendo el fichero" else echo "El fichero no existe" exit 1 fi echo ---- >> /tmp/resultado #Creamos una variable con los datos del fichero datos=`cat $FICHERO` #Se crea un bucle for, que va a ir leyendo cada linea for i in $datos do lista=`echo "$i"` echo $lista >> /tmp/resultado echo ---- >> /tmp/resultado sleep 1 done Algo me falta en el bucle para que me cuente los ítem parece. De antemano agradezco su ayuda.
|
|
|
2
|
Seguridad Informática / Seguridad / Firewall con iptables politica DROP
|
en: 10 Octubre 2012, 00:36 am
|
Estoy con el trabajo de afinar el firewall de mi debian, esta todo bien después de las modificaciones que realice , pero quería que ustedes me den su punto de vista, por si hay algo que pueda mejorar. Resumiendo pase todo a DROP para obtener mejor protección.
Aquí el código:#!/bin/sh ## ## Recordar guardar en ## /etc/network/if-up.d/firewallver.sh ## chmod +x /etc/network/if-up.d/firewallver.sh
## Definimos las variables ## Interface conectada a internet RED_EXT="eth0" ## Interface de red local RED_INT="eth1" ## Ip de casa para conectar SSH IP_CASA="190.138.0.101" ## DNS primario DNS1="208.67.222.222" ## DNS secundario DNS2="208.67.220.220" WEBSERVER="192.168.10.20"
## FLUSH de reglas iptables -F iptables -X iptables -Z iptables -t nat -F
## Establecemos politica por defecto DROP iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
## Por ahora esta todo denegado. ## Debemos decir de manera explicita qué es lo que queremos abrir
## Operar en localhost sin limitaciones /sbin/iptables -A INPUT -i lo -j ACCEPT /sbin/iptables -A OUTPUT -o lo -j ACCEPT
## Este es un servicio que da la maquina a internet, ## por tanto todo paquete entrante se acepta para ## este puerto y los salientes vinculados se aceptan también. #/sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT #/sbin/iptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT
## Abrir puerto 80 del Web server dentro de la red local ## ( mejor seria una DMZ ;) /sbin/iptables -t nat -A PREROUTING -i $RED_EXT -p tcp --dport 80 -j DNAT --to-destination $WEBSERVER:80 /sbin/iptables -A FORWARD -i $RED_EXT -o $RED_INT -p tcp --dport 80 -j ACCEPT
## Abrir puerto 22 para administrar ssh desde casa /sbin/iptables -A INPUT -s $IP_CASA -p tcp --dport 22 -j ACCEPT /sbin/iptables -A OUTPUT -o $RED_EXT -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
## Abrir puerto 22 para administrar ssh desde la red local /sbin/iptables -A INPUT -i $RED_INT -p tcp --dport 22 -j ACCEPT /sbin/iptables -A OUTPUT -o $RED_INT -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
## El puerto 5900 debe estar abierto ya que esta instalado un servidor vnc #/sbin/iptables -A INPUT -s $IP_CASA -p tcp --dport 5900 -j ACCEPT #/sbin/iptables -A OUTPUT -o $RED_EXT -p tcp --sport 5900 -m state --state ESTABLISHED,RELATED -j ACCEPT
## Permitimos que el servidor y la red interna puedan salir a: ## Internet (navegación) /sbin/iptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT /sbin/iptables -A FORWARD -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT
## webs seguras /sbin/iptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT /sbin/iptables -A FORWARD -p tcp -m tcp --sport 443 -m state --state RELATED,ESTABLISHED -j ACCEPT
## Correo POP3 SMTP /sbin/iptables -A INPUT -p tcp -m tcp --sport 110 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --dport 110 -j ACCEPT /sbin/iptables -A FORWARD -p tcp -m tcp --sport 110 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --sport 465 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --dport 465 -j ACCEPT /sbin/iptables -A FORWARD -p tcp -m tcp --sport 465 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --sport 995 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --dport 995 -j ACCEPT /sbin/iptables -A FORWARD -p tcp -m tcp --sport 995 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --sport 587 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --dport 587 -j ACCEPT /sbin/iptables -A FORWARD -p tcp -m tcp --sport 587 -m state --state RELATED,ESTABLISHED -j ACCEPT
## Reglas necesarias para FTP pasivo y activo. ## Se permiten conexiones entrantes establecidas previamente /sbin/iptables -A INPUT -p tcp -m tcp --sport 20:21 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --dport 20:21 -j ACCEPT /sbin/iptables -A FORWARD -p tcp -m tcp --sport 20:21 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -m tcp --dport 1024:65535 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A FORWARD -p tcp -m tcp --sport 1024:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT
## Permitimos la consulta a un primer DNS /sbin/iptables -A INPUT -s $DNS1 -p udp -m udp --sport 53 -j ACCEPT /sbin/iptables -A OUTPUT -d $DNS1 -p udp -m udp --dport 53 -j ACCEPT /sbin/iptables -A FORWARD -s $DNS1 -p udp -m udp --sport 53 -j ACCEPT
## Permitimos la consulta a un segundo DNS /sbin/iptables -A INPUT -s $DNS2 -p udp -m udp --sport 53 -j ACCEPT /sbin/iptables -A OUTPUT -d $DNS2 -p udp -m udp --dport 53 -j ACCEPT /sbin/iptables -A FORWARD -s $DNS2 -p udp -m udp --sport 53 -j ACCEPT
## Permitimos que se actualize la hora con internet /sbin/iptables -A INPUT -p udp -m udp --sport 123 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p udp -m udp --dport 123 -j ACCEPT /sbin/iptables -A FORWARD -p udp -m udp --sport 123 -m state --state RELATED,ESTABLISHED -j ACCEPT
## FORWARD ## Aceptar los paquetes a hacer forward /sbin/iptables -A FORWARD -i $RED_INT -j ACCEPT /sbin/iptables -t nat -A POSTROUTING -o $RED_EXT -j MASQUERADE
## Habilita el forwarding para poder responder echo 1 > /proc/sys/net/ipv4/ip_forward
# Barrera de backup por si cambiamos a modo ACCEPT temporalmente # Con esto protegemos los puertos reservados y otros conocidos /sbin/iptables -A INPUT -p tcp -m tcp --dport 1:1024 -j DROP /sbin/iptables -A INPUT -p udp -m udp --dport 1:1024 -j DROP /sbin/iptables -A INPUT -p tcp -m tcp --dport 1723 -j DROP /sbin/iptables -A INPUT -p tcp -m tcp --dport 3306 -j DROP /sbin/iptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP
#iptables -L -n para verificar las reglas # Fin del script La parte que me preocupa es esta:## Abrir puerto 80 del Web server dentro de la red local ## ( mejor seria una DMZ ;) /sbin/iptables -t nat -A PREROUTING -i $RED_EXT -p tcp --dport 80 -j DNAT --to-destination $WEBSERVER:80 /sbin/iptables -A FORWARD -i $RED_EXT -o $RED_INT -p tcp --dport 80 -j ACCEPT Comentarios y sugerencias espero. Gracias.
|
|
|
3
|
Programación / Scripting / [BATCH] Código para bloquear archivos y/o directorios
|
en: 5 Octubre 2012, 13:08 pm
|
Estoy "trabajando" en un código para bloquear los archivos y/o directorios que están dentro de mis documentos en windows xp. echo S|CACLS "%USERPROFILE%\Mis documentos\*.*" /T /E /C /P TODOS:N Funciona, de cierta manera... no se puede entrar en las carpetas que contiene mis documentos, pero con programas como word revisas los archivos usados recientes y abre los archivos que están dentro de las carpetas que contiene mis documentos. De igual manera si estos directorios tiene accesos directos creados en el escritorio puedo entrar sin problema No quiero borrar nada, solo ocultar o evitar su uso. Repito, en windows xp quiero usar el código.
|
|
|
4
|
Programación / Scripting / Ayuda memoria de comandos Gnu-Linux con útiles ejemplos
|
en: 22 Septiembre 2012, 03:30 am
|
Comandos GNU/Linux - UnixAyuda memoria de comandos con útiles ejemplos Para algunos comandos se debe usar sudo o ser el usuario root [b]Trabajando con archivos y directorios[/b]
ls - lista el contenido de un directorio ls -a - listar archivos y archivos ocultos ls -l - información detallada de los ficheros y directorios listados ls -l | grep ^d - lista solo los directorios en la ubicación actual ls -lrt - listar los ficheros ordenados temporalmente ls -lSrh - muestra una lista de los ficheros de una carpeta ordenados por tamaño (los más grandes al final) ls -l >listado - lista el contenido de un directorio y lo guarda al principio en el archivo listado borrando todo su contenido ls -l >>listado - lista el contenido de un directorio y lo guarda al final en el archivo listado grep gato < archivo - muestra por pantalla las líneas del archivo que contienen la palabra "gato" yes "Hola, soy yo" - escribe en consola, sin parar, "Hola, soy yo" ls /bin | less - lista archivos por pantalla permitiendo deslizar la lista de arriba hacia abajo ls /usr/bin | pr -T9 -W$COLUMNS - lista archivos y muestra por pantalla 9 columnas en ancho de la terminal cd - moverse al directorio de trabajo cd - - regresa a la ubicación anterior cd .. - sube un nivel de directorios pwd - mostrar la ruta actual dirs - mostrar la ruta actual pushd . - guarda el directorio actual en la pila para luego, poder hacer popd y volver al mismo file archivo - describe que tipo de archivo es stat archivo - mostrar el estado del archivo rm archivo1 - borra el archivo1 rm -r dir1 - borra el directorio dir1 rm -f archivo - borra archivo sin pedir confirmación rm -rf dir2 - borra dir2 sin pedir confirmación shred -fvzu archivo - borra definitivamente un archivo cp archivo1 archivo2 - copiar archivo1 en archivo2 cp * /home/usuario - copia todos (*) los ficheros de la ubicación actual a la ruta especificada cp -r dir1 dir2 - copiar el dir1 en dir2 si no existe se crea (cuando un usuario copia un archivo o directorio se convierte en su propietario) cp -Rvf /home/usuario/datos /home/usuario/respaldo - copia un directorio completo a otro directorio mostrando el estado de la copia rsync --progress archivo1 archivo2 - copia mostrando el progreso mv archivo1 archivo2 - renombra archivo1 como archivo2 si archivo2 es un directorio lo mueve dentro el mismo mv nuevo.txt .. - mueve un archivo al directorio del nivel superior rename -v 's/ /_/g' * - sustituir los espacios por guiones bajos en la ubicación actual ls -1 | while read a; do mv "$a" `echo $a | sed -e 's/\ /\./g'`; done - cambia los espacios por . en la ubicación actual ln -s archivo link - crea un enlace simbólico de link hacia archivo touch archivo – crea o actualiza archivo cat > archivo – redirecciona lo que se ingrese por teclado a un archivo cat archivo1 >> archivo2 – copia el contenido de archivo 1 al final del archivo2 cat <<.>> archivo - crear/escribir en un archivo sin abrir el editor de textos, para salir tipear un en una linea solo un . y enter cat archivo1 | sort >archivo2 - ordena alfabéticamente las líneas de un archivo cat archivo1 | tr 'a' 'A' > archivo2 - cambia unos caracteres por otros y crea como resultado el archivo2 more archivo - muestra el contenido de un fichero de forma paginada less archivo - muestra el contenido del archivo por pantalla permitiendo deslizar la lista de arriba hacia abajo less +G archivo - visualizar el archivo empezando desde el final head file - muestra las 10 primeras filas de file tail archivo - muestra las 10 últimas filas del archivo tail -f archivo - muestra las 10 últimas filas del archivo a medida que va creciendo mkdir directorio - crea un directorio mkdir $(date +%F) - crea un directorio con la fecha actual mkdir -p /home/usuario/tesis/enero - crear un árbol de directorios (si tesis no existe lo crea) mkdir -m 777 directorio - crea un directorio asignándole los permisos java -jar archivo.jar - ejecuta un programa java nano -B /home/usuario/informes - hace un backup del archivo antes de guardarlo y le agrega un ~ convert -resize 640x480 original.jpg modicada.jpg - redimensiona una imágen convert imágen_color.jpg -monochrome imágen_byn.jpg - convertir una imagen a blanco y negro convert *.jpg catálogo.pdf - crear un catálogo pdf con imágenes identify imagen.jpg - ver las propiedades de una imagen animate imagen.gif - visualizar gif animados convert fichero.pdf extraido - extraer las imágenes de un pdf gpg -c archivo - cifra archivo gpg archivo.gpg - descifra archivo view archivo - visor de archivos mcedit archivo - editor de archivos
[b]Gestión de medios[/b]
mount /dev/cdrom /mnt/cdrom - monta la unidad de cd en /mnt/cdrom umount /dev/cdrom /mnt/cdrom - desmonta la unidad de cd de /mnt/cdrom cat /dev/cdrom > debian.iso - crea una imagen iso del cd dd if=/dev/cdrom of=/tmp/imagen.iso - crea una imagen iso del cd cat /dev/sda > /dev/sdb - copia todo el disco duro 'sda' en el disco duro 'sdb' mkisofs -L -max-iso9660-filenames -o documentos.iso /home/usuario/Documentos - crear una imagen ISO a partir de un directorio mkisofs /mnt/cdrom | gzip > cd_iso.gz - crear una imagen ISO comprimida de un cd gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - grabar a CD una imagen ISO comprimida md5sum archivo.iso > archivo.iso.txt - generar la suma control MD5 de un archivo md5sum -w -c archivo.iso.txt - verificar la suma control MD5 de un archivo (archivo.iso y archivo.iso.txt deben estar en el mismo directorio) dd if=/dev/dvd | md5sum - ejecutar un checksum md5 en un dispositivo como un DVD md5sum -cv software.tar.gz.md5 - comprueba el archivo software.tar.gz y el archivo de firma MD5 mount -o loop -t iso9660 /ruta/de/imagen.iso /puntodemontaje – monta una imagen iso cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force - borrar un cdrom cdrecord -v speed=8 dev=0,0,0 imagen.iso - grabar una imagen ISO a 8x mount -t ext3 /dev/particionLinux /mnt/carpetademontaje - monta un sistema de ficheros ext3 mount /dev/usbdisk /mnt/carpetademontaje - monta un dispositivo USB badblocks -v /dev/hda1 - verificar la existencia de bloques erróneos en el disco hda1 fsck /dev/hda1 - reparar-verificar integridad de un sistema de archivos linux en el disco hda1 mke2fs /dev/hda1 - crear un sistema de archivos tipo linux ext2 en la partición hda1 mke2fs -j /dev/hda1 - crear un sistema de archivos tipo linux ext3 (journal) en la partición hda1 mkfs /dev/hda1 - crear un sistema de archivos tipo linux en la partición hda1 mkfs -t vfat 32 -F /dev/hda1 - crear un sistema de archivos FAT32 mkswap /dev/hda3 - crear un sistema de archivos swap swapon /dev/hda3 - activar una nueva partición swap swapon /dev/hda2 /dev/hdb3 - activar dos particiones swap
[b]Gestión de procesos[/b]
ps - muestra los procesos activos del usuario ps -aux - muestra todos los procesos del sistema pstree -AGUp - muestra los procesos en forma de árbol con número de PID ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS - muestra los procesos ordenados por uso de memoria (los que más memoria usan al final) top - muestra todos los procesos y su consumo de cpu ram y swap en tiempo real kill pid - mata el proceso con id pid killall proc - mata todos los procesos proc bg - lista los procesos parados o en segundo plano fg - lleva el proceso más reciente a primer plano fg n - lleva proceso n a primer plano time comando - mide el tiempo que se ejecuta comando nice proceso prioridad - permite ajustar la prioridad de un proceso de -20 a 19 (por defecto es 10 su valor)
[b]Permisos[/b]
chmod 777 archivo - lectura, escritura y ejecución para el propietario, grupo, y otros chmod 775 archivo - lectura, escritura y ejecución para el propietario y grupo, lectura y ejecución para otros chmod 755 archivo - lectura, escritura y ejecución para el propietario, lectura y ejecución para grupo y otros chmod 750 archivo - lectura, escritura y ejecución para el propietario para el propietario, lectura y ejecución para grupo, otros nada chmod 700 archivo - lectura, escritura y ejecución para el propietario para el propietario, grupo y otros nada umask - muestra el valor de la máscara del usuario para creación de archivos y directorios (predeterminada umask 022 = chmod 755) umask 077 - fija el valor de la máscara del usuario para creación de archivos y directorios a 077 que es igual a chmod 700 chown usuario archivo - cambia de propietario el archivo o directorio chown usuario:grupo archivo - cambia el propietario del fichero o directorio y el grupo al cual pertenece chgrp grupo archivo - cambia el grupo del archivo al grupo especificado chgrp -R internet descargas - asignar al grupo internet el directorio descargas chattr -R +i directorio - protege el directorio y su contenido recursivamente de escritura/borrado/modificación stat -c '%A %a %n' archivo - mostrar los permisos en formato octal de un archivo o directorio
[b]Comandos relacionados con shell script[/b]
echo $0 - muestra cuál shell esta en uso cat /etc/shells – muestra las shells disponibles en el sistema script.sh - todos los scripts por regla general deben terminar con .sh no es obligatorio pero permite identificarlos más fácilmente al usuario #!/bin/bash - en la primera línea del script se debe indicar que shell se va a usar # - la almohadilla indica que en esa linea del script todo lo escrito es un comentario, estos comentarios no se verán en pantalla cuando se ejecute el script chmod +x script.sh - asigna permisos de ejecución al script ./script.sh - ejecuta un script sh script.sh - ejecuta el fichero de script especificado source script.sh - ejecuta un script aunque no tenga permisos de ejecución sh -n tu_script.sh - comprueba errores de sintaxis en el script sin ejecutarlo, si no retorna nada entonces el script no tiene errores de sintaxis echo hola - escribe el mensaje hola en la salida estándar (pantalla) echo '*' - nos muestra por pantalla el carácter especial *. Las terminal interpreta todo lo que esta dentro de las comillas como un carácter sin significado especial, ídem para variables, espacios y símbolos ? [ ] > >> < & ; \ ' ) | echo \*.jpg - elimina el significado especial de un único carácter anteponiendole una barra invertida \ echo `date` - ejecuta el comando date insertado dentro de las comillas invertidas y muestra por pantalla la fecha y hora actual env - muestra las variables globales set | less - muestra todas las variables de entorno shell y su valor unset HISTFILE - deshabilita el historial para la cesión actual echo $ +Tab+Tab - muestra las variables disponibles (comando echo $ y después pulsamos dos veces la tecla TAB ) DESTINO="192.168.1.233" - define la variable DESTINO con el valor 192.168.1.233 echo $DESTINO - muestra por pantalla el valor de la variable DESTINO export VARIABLE - exporta una variable para que se convierta en una variable global export nombrevariable=valor - cambia el valor de una variable de entorno alias listar='ls -lah' - creará un nuevo comando llamado listar, que cada vez que se ejecute será igual que si ejecutásemos el comando ls -lah read -p "Introduce tu nombre nombre:" nombre - crea una variable a partir de lo que se ingresa por el teclado read -sn1 -p "Presione una tecla para continuar..."; echo - comando de pausa en bash test -d /home/usuario && echo "Existe el directorio" - informa por pantalla únicamente si el directorio existe ssh -T user@server < script.sh - ejecuta un script local en un servidor remoto
[b]SSH – SCP - FTP[/b]
ssh usuario@pc_remota - conectar a pc_remota como usuario ssh -p 22 -l usuario 192.168.1.9 - conectar a pc_remota (192.168.1.9) por el puerto 22 como usuario ssh usuario@pc_remota last -10 - ejecuta el comando en la pc remota sin necesidad de hacer login ssh-copy-id usuario@pc_remota - añadir clave de usuario a pc_remota para autenticarte scp usuario@ordenador_remoto:/directorioremoto/fichero /tmp/nuevofichero copia un fichero remoto al directorio local /tmp scp -r usuario@ordenador_remoto:/directorioremoto/directorio /tmp/nuevodir copia un directorio remoto con todo su contenido al equipo local scp /tmp/fichero1 usuario@ordenador_remoto:/directorioremoto/nuevofichero copia el fichero1 a un equipo remoto scp -r /tmp/directorio usuario@ordenador_remoto:/directorioremoto/nuevodir copia el directorio con todo su contenido a un equipo remoto ftp -i -n 95.211.109.197 - se conecta con el servidor FTP nlist . /home/usuario/lista_ftp - obtiene un listado de los archivos del FTP y se guarda en como lista_ftp rename backup backupold - renombra el directorio backup a backupold del FTP
[b]Búsqueda[/b]
ls | grep frase - buscar patrón frase en la salida del comando ls ls archivoa archivob archivoc 1>existentes 2>inexistentes - busca en un directorio los archivos solicitados y guarda 2 resultados, existentes y inexistentes grep frase archivo - buscar patrón frase en archivo grep -r frase directorio – buscar recursivamente patrón frase en directorio grep -w -v -f archivo1 archivo2 – muestra en pantalla una lista de las lineas de archivo2 que no están en archivo1 locate archivo - busca instancias de archivo perl -i.bak -pe 's/manzana/naranja/; s/dollar/euro/; s/foo/bar/;' archivo - crea un backup y luego cambia la palabra manzana por naranja, dolar por euro find . -name tesis - busca archivos y carpetas con el nombre tesis en la ubicación actual find . -iname tesis - busca archivos y carpetas con el nombre tesis aunque tenga mayúsculas o minúsculas indistintamente en la ubicación actual find . -user alumno - buscar archivos y carpetas que le pertenezcan al usuario alumno en la ubicación actual find . -type f -mtime -10 - buscar archivos creados o modificados en los últimos diez días la ubicación actual find . -type f -atime +10 - busca archivos que no han sido usados en los últimos 10 días en la ubicación actual find . -type f -mtime -2 -exec cp -r '{}' /home/usuario/backup \; busca en el directorio actual archivos creados o modificados los últimos 2 días y los copia a la ruta especificada find . -mtime +2 -exec rm -rf {} \; borra archivos de 2 días de antigüedad en el directorio actual (OJO) find . -name \*.txt -exec chmod 755 '{}' \; buscar en el directorio actual archivos con extensión '.txt' y modifica sus permisos a 755 find -type f ! -perm -444 - buscar archivos con permiso de solo lectura
[b]Información del sistema[/b]
uname -a - muestra información de la máquina y el sistema operativo lsb_release -a - muestra que distribución esta instalada head -n1 /etc/issue - muestra el nombre y la versión de la distribución instalada date - muestra la fecha y hora del sistema en formato local date -u - muestra la fecha y hora del sistema en formato universal (UTC) hwclock --show - muestra la hora de la BIOS grep UTC /etc/default/rcS - Comprobamos si la BIOS tiene hora local o universal (UTC) uptime - tiempo que lleva encendido el sistema who -b - muestra la fecha y hora del último reinicio del sistema who -u - nos dice quienes están conectados al sistema w - es una variación del comando who que ofrece más información whoami - nombre de mi usuario finger usuario - muestra información sobre usuario man comando - páginas de manual del comando man -k palabra-clave - busca dentro de las descripciones de man la palabra clave ejemplo: man -k e2fs info comando - paginas de manual gnu info comando --help - da una ayuda sobre el comando apropos palabra_clave - busca dentro de las descripciones de man la palabra clave apropos -e palabra_exacta - busca dentro de las descripciones de man la palabra exacta whereis aplicación - localiza el binario, fuente y página de manual de app whatis comando - muestra descripción del comando which comando - localiza la aplicación mostrando la ruta de acceso del fichero ejecutable type comando - muestra la ubicación del comando especificado df -h - muestra espacio libre en los discos du -hs /home/usuario - muestra espacio usado por el usuario lsmod - muestra los módulos cargados en el kernel ls -l /etc/init.d - muestra los servicios instalados en el equipo fc-list | cut -d ':' -f 1 | sort -u - muestra las fuentes instaladas en el sistema
[b]Información de hardware[/b]
cat /proc/cpuinfo - información sobre la CPU cat /proc/meminfo - información sobre el uso de la memoria cat /proc/swaps - información sobre el uso de la memoria swap cat /proc/net/dev - verifica los adaptadores de red y sus estadísticas cat /proc/mounts - muestra los sistemas de ficheros que se encuentran montados cat /proc/version - muestra información del sistema operativo cat /proc/interrupts - mostrar interrupciones vmstat - muestra estadísticas de uso de la memoria, cpu, lectuas/escrituras en disco, etc ls pci - lista los dispositivos PCI con lo que dispone el equipo ls usb - lista los dispositivos USB con lo que dispone el equipo dmidecode q | less - muestra la información del BIOS en un listado muy completo de todo el hardware encontrado en el equipo dmidecode -t baseboard - muestra información de la placa madre dmidecode -t bios - muestra información de la BIOS lshw - lista el hardware del equipo lsmod - muestra el estado de los módulos en el Kernel del sistema free - uso de memoria y memoria swap dmesg - muestra los mensajes del kernel durante el inicio del sistema fdisk -l - muestra información de las particiones hdparm -i /dev/sda - despliega las características de un disco duro hdparm -tT /dev/sda - realiza un test para calcular la velocidad de transferencia del disco duro indicado
[b]Empaquetado y compresión[/b]
tar cf archivo.tar archivo - empaqueta archivo en un fichero archivo.tar tar xf archivo.tar - extrae el contenido de archivo.tar tar czf archivo.tar.gz archivo – empaqueta y comprime (gzip) archivo en archivo.tar.gz tar xzf archivo.tar.gz - extrae y descomprime usando Gzip tar zxvf directorioEmpaquetado.tar.gz -C home/usuario/dirdestino - desempaqueta y descomprime en el directorio destino tar czv debian.iso | split -b100m – debian.tar.gz - comprime un archivo iso y lo separa en partes de 100mb cat debian.tar.gz* | tar xzvf - - une los archivos que antes separamos tar cjf archivo.tar.bz2 archivo - empaqueta y comprime (bzip2) archivo en archivo.tar.bz2 tar xjf file.tar.bz2 - extrae y descomprime usando Bzip2 bzip2 documento - crea el archivo documento.bz2 y borra el original bzip2 -d documento.bz2 - descomprime el archivo.tar.bz2 tar jxvf dircomprimido.tar.bz2 -C /home/usuario/dirdestino - desempaqueta y descomprime en el directorio destino gzip archivo - crea el archivo archivo.gzip y borra el original gzip -d archivo.gz - descomprime archivo.gz split -b10m archivo - troza un archivo en partes de 10mb con nombres xaa xab xac… cat x* > archivo - une los archivos xaa xab xac….
[b]Redes[/b]
ifconfig -a - muestra la configuración de red ip addr show - muestra todas las direcciones de todas las interfaces de red del equipo curl ifconfig.me - muestra la IP externa (requiere conexión a Internet) iwlist scan - mostrar redes inalámbricas disponibles ip link | awk '/link/ {print $2}' - lista las MAC address del equipo ifconfig eth0 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255 up asigna la ip, la mascara y el broadcast al dispositivo de red eth0 route add default gw 192.168.1.1 eth0 - asigna la puerta de enlace al dispositivo de red eth0 echo "nameserver x.x.x.x" > /etc/resolv.conf - configura el 1er servidor DNS echo "nameserver x.x.x.x" >> /etc/resolv.conf - configura el 2do servidor DNS ping host - hace ping a host y muestra los datos ping -c 10 192.168.1.2 - hace ping 10 veces luego se detiene whois dominio - información del dominio wget -c www.servidor.com/archivo.zip - inicia o continua una descarga parada wget -c –passive-ftp ftp://archivo.zip - continua o inicia una descarga usando el modo pasivo del FTP wget -r www.ejemplo.com - descargar un sitio web completo wget -o /reporte.log --limit-rate=50k ftp://ftp.centos.org/download/centos5-dvd.iso | at 01:00 - inicia la descarga a la 1 am, limitada a 50k y crea un reporte wget –http-user=usuario –http-password=contraseña http://ejemplo.com/archivo.mp3 descarga de un sitio donde se requiere de usuario y contraseña wget -r -l10 www.sitioweb.com – descarga un sitio web recursivamente hasta 10 niveles /etc/init.d/networking restart - reinicia la red restart smbd - reinicia samba /etc/init.d/samba restart - reinicia samba rm /etc/udev/rules.d/70-persistent-net.rules útil cuando remplazamos físicamente la tarjeta de red netstat -i - visualiza las estadísticas de todos los dispositivos de red configurados netstat -a - muestra las conexiones de red actuales netstat -putall - muestra los puertos abiertos netstat -ant - muestra las conexiones activas a internet lsof -Pni4 | grep LISTEN - comprobar los puertos abiertos netstat -ln - conexiones activas a Internet netstat -atun | grep ESCUCHAR - muestra las conexiones establecidas a puertos determinados ip route show - muestra todas las rutas definidas en nuestro equipo mount -t cifs //ipservidor/dircompartido /home/usuario/carpetademontaje -o user=usuario,passwd=contraseña - monta en el pc un directorio compartido en red ifconfig wlan0 down - detiene la interfaz de red especificada ifconfig wlan0 up - inicia la interfaz de red especificada ifconfig wlan0 hw ether 02:01:02:03:04:08 - cambia el mac adress del dispositivo de red wlan0 (previamente detener la interfaz de red y luego iniciarla) sudo -s "echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all" - deshabilita la respuesta de ping sudo -s "echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all" - habilita la respuesta de ping twistd -n web --path . - publica el directorio actual en http://ipdelpc:8080/ dd if=/dev/zero bs=256 count=1048576 | ssh user@ipserv 'cat > /dev/null' - test de velocidad de la red (realizada copiando 256 mb de datos vacíos)
[b]Backup y resguardo del sistema[/b]
dd bs=1M if=/dev/sda | gzip | ssh usuario@ip_serv 'dd of=sda.gz' - hacer un respaldo de un disco duro local en un host remoto via ssh dd if=/dev/sda of=/tmp/file1 - respaldar el contenido del disco duro a un archivo dump -0aj -f /tmp/home0.bak /home - hacer un respaldo completo del directorio '/home' dump -1aj -f /tmp/home0.bak /home - hacer un respaldo incremental del directorio '/home' restore -if /tmp/home0.bak - restaurar un respaldo interactivamente rsync -rogpav --delete /home /tmp - sincronización entre directorios (ver todavia) rsync -rogpav -e ssh --delete /home ip_address:/tmp - sincronización a través de un túnel SSH rsync -az -e ssh --delete ip_addr:/home/public /home/local - sincronización de un directorio local con uno remoto vía ssh y compresión rsync -az -e ssh --delete /home/local ip_addr:/home/public - sincronización de un directorio remoto con uno local vía ssh y compresión tar -Puf backup.tar /home/usuario - hacer un respaldo incremental del directorio /home/usuario ( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' - copiar el contenido de un directorio a un directorio remoto via ssh ( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' copiar el contenido de un directorio local a un directorio remoto via ssh tar cf - . | (cd /tmp/backup ; tar xf - ) - copia local, preservando permisos y ligas de un directorio a otro lftp -u login,passwd -e "mirror --reverse /dir/local/ /ftp/dir/destino/" ftp.server - hace un espejo de un directorio local a un directorio ftp sfdisk -d /dev/sda | sfdisk /dev/sdb - copia la tabla de partitiones de /dev/sda a /dev/sdb
[b]Automatizando el backup[/b]
nano /etc/crontab - edita el servicio de tareas programadas cron
Algunos ejemplos de cron
17 * * * * usuario /home/usuario/miscript.sh - ejecuta la tarea en el minuto 17 de cada hora todos los días 30 10,18,21 * * * usuario /home/usuario/miscript.sh - ejecuta la tarea en el minuto 30 de las horas 10,18 y 21 todos los días
[b]Instalación de software[/b]
Instalar desde las fuentes ./configure make make install ./arhivo.bin - instala un archivo binario, previamente darle permisos de ejecución con chmod +x archivo.bin
[b]Instalar paquetes Debian y derivados[/b]
dpkg -i paquete.deb - instala un paquete deb dpkg -l - listado de todos los paquetes instalados dpkg -i * - instala todos los paquetes deb contenidos en el directorio en que se ejecuta dpkg -r paquete.deb - desinstala paquete deb dpkg -P paquete.deb - desinstala un paquete y borra sus los archivos de configuración dpkg-deb -I mipaquete.deb - lista las dependencias de un paquete .deb apt-get install samba - instala la aplicación especificada (requiere conexión a internet) apt-get update - actualiza la base de datos de paquetes a actualizar o instalar a partir del fichero /etc/apt/sources.list (requiere conexión a internet) apt-get upgrade - actualiza todos los paquetes instalados en el sistema a la última versión disponible (requiere conexión a internet) apt-get -s dist-upgrade - hacer una simulación de los programas que se van a actualizar, sin llegar a hacerlo apt-get install -f paquete - comprueba la correcta instalación de/los paquetes descargados y sus dependencias (requiere conexión a internet) apt-cache search aplicación - busca una aplicación en la lista de aplicaciones a instalar apt-cache show aplicación - mostrar información del programa
[b]Instalar paquetes Red Hat y derivados[/b]
rpm -Uvh pkg.rpm - instala paquete rpm rpm -qpR paquete - lista las dependencias de un paquete .rpm yum install paquete - instala un paquete yum update paquete - actualiza paquetes asegurando dependencia yum check-update - revisa paquetes a actualizar yum remove paquete - borra paquetes
[b]Combinaciones de teclas[/b]
Ctrl+A - inicio de linea Ctrl+E - fin de linea Ctrl+C - interrumpe el comando activo Ctrl+Z - suspende el comando activo, con fg se reanuda y con bg se lleva a segundo plano Ctrl+D - abandona sesión actual, similar a exit Ctrl+W - borra una palabra en la línea actual Ctrl+U - borra toda la línea Ctrl+K - elimina hasta el fin de la linea Ctrl+Y - restablece la linea borrada Ctrl+L - limpia la pantalla Ctrl+R - intercambia los dos últimos caracteres Ctrl+H - retroceso Ctrl+J - equivale a enter Ctrl+X+E - invoca al editor de textos predeterminado Alt+F1 a Alt+F6 abre una nueva terminal. Alt+. - inserta el último argumento del comando anterior Alt+Esc - inserta el último argumento del comando anterior Alt+_ - inserta el último comando Tab - auto-completa el comando Shift+RePág - se desplaza hacia arriba Shift+AvPág - se desplaza hacia abajo echo -e "Terminal shortcut keys\n" && sed -e 's/\^/Ctrl+/g;s/M-/Shift+/g' <(stty -a 2>&1| sed -e 's/;/\n/g' | grep "\^" | tr -d ' ') - muestra un listado con los atajos de teclado disponibles
[b]Administración del sistema[/b]
sudo - permite la ejecución de comandos como superusuario (solicita la propia contraseña) sudo su - trabaja con privilegios de administrador en su propio entorno (solicita la propia contraseña) sudo -i - trabaja con privilegios de administrador en el entorno del root (solicita la propia contraseña) su - trabaja con privilegios de administrador en su propio entorno (solicita la contraseña de root) su - - trabaja con privilegios de administrador en el entorno del root (solicita la contraseña de root) sudo -e /etc/samba/smb.conf - sudoedit invoca al editor de textos por defecto visudo - muestra y permite editar el fichero /etc/sudoers, donde se le indica al sistema qué usuarios podrán ejecutar comandos como si fuesen el usuario root utilizando el comando "sudo" exit - abandona la sesión actual logout - terminar sesión init 0 - apaga la maquina init 1 - modo monousuario init 2 - modo multiusuario, sin funciones de red init 3 - modo multiusuario, con funciones de red init 4 - no utilizado init 5 - X11 multiusuario, red, modo gráfico init 6 - reinicia la maquina reboot - reiniciar sistema halt - apaga el equipo poweroff - apaga el equipo shutdown -h now - apaga el sistema instantáneamente shutdown -h +5 - apaga la pc en 5 minutos shutdown 15 'El sistema se cerrará en 15 minutos, guarde su información' envía un mensaje a todos los usuarios conectados y apaga el sistema en 15 min shutdown -h 15:35 "El sistema se apagará a las 15:35" - envía un mensaje a todos los usuarios conectados y apaga el sistema a la hora indicada shutdown -r now - reiniciar el sistema instantáneamente shutdown -r 20:00 - reinicia el equipo a la hora y minuto indicada history 10 - muestra los últimos 10 comandos ejecutados history -c - borra el historial de comandos ejecutados history -r - borra el historial de la cesión actual dpkg-reconfigure tzdata - reconfigura la zona horaria del sistema apt-get clean - elimina todos los paquetes descargados (almacenados automáticamente en /var/cache/apt/archives date -s "04/25/11" +"%D" - cambia la fecha del sistema al 25 de Abril del 2011 date -s "15:00:00" +"%T" - cambia la hora del sistema a las 15:00 hwclock -systohcv - ajusta el reloj de la BIOS a la hora del sistema hwclock -hctosys - ajusta el reloj del sistema a la hora de la BIOS ntpdate -u ntp.ubuntu.com - sincroniza la hora con la del servidor at -f script.sh 11:28 25.04.11 - ejecuta un script el 25 del 4 del 2011 a las 11:28 minutos atq - lista las tareas automáticas programadas atrm 8 - elimina la tarea número 8 service cron restart - reinicia un servicio (cron en este caso) service smbd stop - detiene un servicio (samba en este caso) service apache2 start - inicia un servicio ( apache en este caso) smbstatus - muestra el estado del servicio samba watch -n 10 comando - ejecuta un comando cada 10 segundos last - lista el historial de accesos al sistema lastb - lista el historial de accesos fallidos al sistema last reboot - muestra las veces que el equipo se ha reiniciado, la fecha, la hora y el tipo de reinicio ldd /usr/bin/ssh - muestra las librerías requeridas por archivos ejecutables (ssh en este caso) fsck /dev/sda1 - comprueba el sistema de ficheros de la partición sda1 echo 10 | sudo dd of=/proc/acpi/video/VGA/LCD/brightness - establece el brillo de la la pantalla del LCD en 10% touch /forcefsck – ejecuta un chequeo del sistema la próxima vez que se inicie add-apt-repository ppa:gezakovacs/ppa - agrega repositorios desde la terminal badblocks -n -s /dev/sda - comprueba sectores averiados en la unidad sda apt-get --just-print upgrade - lista actualizaciones disponibles sin actualizar el sistema sync; echo 3 > /proc/sys/vm/drop_caches - borrar la memoria caché watch lsof -i :80 - muestra quien esta visitando nuestra web /etc/modprobe.d/blacklist - añadir el módulo a la lista negra por lo que no se cargará cuando se inicie el sistema fuser -k 80/tcp - esto cerrará el puerto 80, puerto por defecto utilizado por el servidor web taskset -c 0 comando - ejecuta el comando usando solo un núcleo del CPU
[b]Administración de usuarios[/b]
passwd - asigna o cambia la contraseña del usuario actual passwd root - asigna o cambia contraseña al usuario root passwd -e usuario - expira inmediatamente la contraseña del usuario forzándole a cambiarla la próxima vez que inicie cesión passwd -d usuario - borra la contraseña permitiendo entrar sin password al usuario passwd -l usuario - bloquea la cuenta de un usuario passwd -u usuario - desbloquea la cuenta de un usuario bloqueado userdel usuario - elimina al usuario del sistema chage -E 2011-12-31 usuario - estable la fecha limite en la que el password del usuario caduca chage -d 0 -m 0 -M 60 usuario - se le solicitará al usuario cambiar la contraseña la próxima vez que inicie cesión groups usuario - muestra los grupos a los que pertenece el usuario id usuario - muestra identificación del usuario y los grupos a los que pertenece pinky -l usuario - proporciona información del usuario, directorio de trabajo y cual shell usa addgroup nuevogrupo - crea un grupo groupadd nuevogrupo - añade un nuevo grupo adduser nuevousuario - crea un nuevo usuario adduser -u 0 -o -g 0 -G 0,1,2,3,4,6,10 -M usuario - añade un usuario al sistema operativo como si se tratase del superusuario root (con los mismos permisos) usermod -G grupoa,grupob usuario - asigna grupos a un usuario useradd -s /sbin/nologin usuario - crea la cuenta usuario desactivada, ideal para usuarios samba smbpasswd -a usuario - crea la contraseña samba al usuario chfn usuario - cambia el nombre real del usuario e información adicional openssl rand -base64 8 - genera un password aleatorio de 8 dígitos
[b]Archivos de configuración[/b]
/etc/hostname - muestra el nombre del equipo /etc/hosts.allow - equipos con permiso de conectarse /etc/hosts.deny - equipos sin permiso de conectarse /etc/samba/smb.conf - configuración de samba /etc/network/interfaces - configuración de las interfaces de red /etc/cups/cupsd.conf - configuración del servicio de impresión /etc/squid/squid.conf - configuración del proxy caché squid /etc/resolv.conf – configuración de servidores dns /etc/crontab – configuración del servicio de tareas programadas cron /etc/fstab - configuración de fstab /etc/sudoers - configuración de usuarios que podrán ejecutar comandos como si fuesen el root utilizando el comando "sudo" /etc/apt/sources.list - lista de repositorios de apt
[b]Utilidades[/b]
? - remplaza un único carácter o dígito ~ - directorio de trabajo del usuario actual $ - usuario normal # - súper usuario (root) & - agregando al final del comando permite que se ejecute en segundo plano !! - ejecutar el último comando utilizado bc - calculadora en la terminal | - enlaza ordenes, usado para interconectar procesos shopt -s cdspell - corregirá automáticamente los errores tipográficos cometidos en las ejecuciones del comando cd <espacio>date - espacio seguido de un comando ejecuta el comando sin guardarlo en el historial comando1 || comando2 - el comando2 se ejecuta si comando1 no es exitoso comando1 && comando2 - únicamente si comando1 se ha ejecutado sin error, se ejecutará comando2 ; - ejecuta un comando a continuación de otro setterm -blank 0 - desactiva el salva pantallas negro, agregar a /etc/rc.local para hacer persistente la orden clear - borra la pantalla startx - arranca el servidor gráfico (si esta instalado) sleep 10 - retarda 10 segundos antes de continuar con lo siguiente cal - calendario del mes en curso cal -3 – calendario del mes anterior, actual y siguiente cal 2011 - calendario completo de un año cal 09 2011 - calendario correpondiente al mes del año especificado for y in $(seq 2011 2013); do cal $y; done - muestra el calendario de múltiples años man -t ls | ps2pdf - > ls.pdf - convertir páginas del manual en archivo pdf lpr archivo - envía un documento a la cola de impresión grep -v '^#\|^$\|^;' /etc/samba/smb.conf - visualiza por pantalla las líneas que no tienen comentarios y omite las lineas en blanco del archivo smb.conf echo 'hardstatus alwayslastline " %d-%m-%y %c:%s | %w"' >> $HOME/.screenrc; screen - reloj en la última linea de la terminal (exit para salir) pdftohtml -i -stdout FILE.pdf | w3m -T text/html - visualizar documentos PDFs en la linea de comandos con w3m (sin imágenes) egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' archivo.txt - extrae las ip's de un archivo Atención: No es un simple copy y paste, los fui anotando uno a uno durante mi actividad laborar con sistemas Gnu/Linux. Espero sea de ayuda, así como me sirve cotidianamente a mi.
|
|
|
5
|
Programación / Scripting / Sumarle 1 mes a la fecha actual en batch
|
en: 20 Septiembre 2012, 15:42 pm
|
Estoy tratando de ver la forma de hacer un script que a la fecha actual le sume un mes y el resultado se guarde en in archivo.txt, el problema me aparece por ejemplo con el mes 12, encontré un código en la siguiente web http://multingles.net/docs/jmt/sumdias.htm@echo off setlocal ENABLEEXTENSIONS call :dias %1 set /a j+=%2 call :inc %j% echo %dd%/%mm%/%yy% endlocal goto :EOF
:dias for /f "tokens=1,2,3 delims=-/." %%a in ("%1") do ( set dd=%%a&set mm=%%b&set yy=%%c) set /a dd=100%dd%%%100,mm=100%mm%%%100 set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2 set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633 goto :EOF
:inc set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5 set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10 (if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%) goto :EOF Y al final del código explica su forma de uso: Si lo llamamos por ejemplo inc_fecha.cmd, la manera de invocarlo será: inc_fecha fecha ndias fecha: admite el formato: dd.mm.aaaa, dd-mm-aaaa o dd/mm/aaaa El resultado sumar los "ndias" tecleados a la fecha. (admite signo para restar días) NOTA: la rutina es exacta teniendo presente la regla de bisiestos en centenarios. Pero no me da el resultado deseado, alguien puede ayudarme por favor.
|
|
|
|
|
|
|