Ir al contenido

Buscar en La Comunidad

Mostrando resultados por etiquetas 'script'.

  • Buscar Por Etiquetas

    Añade etiquetas separadas por comas.
  • Buscar Por Autor

Tipo de Contenido


Foros

  • Contacto con el staff
    • Novedades / Anuncios del foro
    • Sugerencias
    • Problemas relacionados con el foro
  • Zona general de charla
    • Presentaciones
    • Charla
    • Zona de Humor, Curiosidades y Otros
    • Mascotas Vagos
    • Noticias del Mundo
    • Tecnología
    • Ayuda y consultas de carácter general
  • Zona GNU/Linux
    • Ayuda, consultas y soporte GNU/Linux
    • Distribuciones GNU/Linux
    • Repositorios. Software GNU/Linux
    • Personalización
    • Raspberry Pi
    • Arduino
    • Manuales / Tutoriales / Guías GNU/Linux
    • Programación
    • Noticias GNU/Linux
    • Hablando de GNU/Linux
  • Zona Gaming
    • Juegos GNU/Linux
    • Noticias Gamer
    • Charla Gamer
  • Zona Móvil
    • Ayuda y soporte para dispositivos móviles
    • Apps Móviles
    • Manuales / Tutoriales / Guías Móviles
    • Roms para dispositivos Móviles
    • Noticias sobre dispositivos Móviles
    • Hablando sobre dispositivos Móviles
  • Zona Mozilla
    • Ayuda, consultas y soporte Mozilla
    • Aplicaciones Mozilla
    • Roms Firefox OS
    • Manuales / Tutoriales / Guías Mozilla
    • Noticias Mozilla
    • Hablando de Mozilla
  • Microsoft
    • Papelera del Foro

Encontrar resultados en...

Encontrar resutados que...


Fecha de Creación

  • Start

    Fin


Última Actualización

  • Start

    Fin


Filtrar por numero de...

Joined

  • Start

    Fin


Grupo


Página Web


Diaspora


Pump


GNU Social


Google +


Twitter


Facebook


Xmpp


Skype


Steam


Desura


MediaGoblin


Youtube


Vimeo


Picasa


Flickr


Email


Lugar


Intereses

Encontramos 27 resultados

  1. Hace tiempo creo que supe como hacer esto pero ahora mismo no me acuerdo o estoy confuso. Os cuento el tipico script para ver el tiempo desde wttr.in con comando curl → $ curl wttr.in/local y entonces intento mediante lxmenu hacer un lanzador para que me ejecute eso con un click y me lo muestre en terminal y resulta que por vueltas que le doy no me lo hace ejemplo $ bash /home/joao/.config/tempo.sh $ bash -x /home/joao/.config/tempo.sh $ bash -c /home/joao/.config/tempo.sh $ lxterminal -e "bash -c '/home/joao/.config/tempo.sh;$bash' " ... Y nada solo me abre el lxterminal nada más. El script esta tal que asi → #!/bin/bash curl https://wttr.in/chaves En lxmenu tengo el desktop launcher asi → [Desktop Entry] Name=Tempo-Chaves Exec=bash /home/joao/.config/tempo.sh Comment= Icon= NoDisplay=false Type=Application Terminal=true Categories=Utility; A ver si alguien me hecha una luz.
  2. Saludines GNU/Linuxeros Hace poco leí en un articulo que se pueden usar los códigos QR para conectar el Smartphone a la red WiFi simplemente escaneando el código con un programa como Barcode Scanner, ahorrándose uno así la faena de buscar el nombre de la red e introduciendo la contraseña manualmente. Para generar el QR existen páginas web con un simple formulario que hasta ofrecen en github su código fuente en Javascript, concretamente he visto esta: https://qifi.org La idea me pareció fantástica, ya que en casa a uno le pueden pedir esos datos cuando menos se lo espera. Pero la idea de poner todos esos datos en una web publica no me hace mucha gracia, aunque en la página aseguran que el código javascript se ejecuta localmente y no se envía nada a nadie. A pesar de eso, solo se trata de codificar una cadena cuyo "estándar" se encuentra aquí: https://github.com/zxing/zxing/wiki/Barcode-Contents#wifi-network-config-android Así que pensé en hace un aplicación local igual de sencilla para generar los QR que no tenga muchas dependencias, por eso he elegido usar programación con bash y zenity para la GUI y a elección del usuario python-qrcode o qrencode para generar el QR. Para la GUI habría quedado mejor con PyGTK o TkInter pero de momento es lo que hay. A continuación os dejo los comandos para instalar estas dependencias (que me extrañaría que no las tuvieseis ya instaladas) y el programa en si: Ubuntu: sudo apt-get install zenity python-qrcode Arch: sudo pacman -S zenity python-qrcode Para el que prefiera qrencode: sudo apt-get install qrencode o sudo pacman -S qrencode El script usando zenity: Para los que no quieran instalar zenity, sin GUI: Hace tiempo que no hago nada en bash así que es posible que os salte algún que otro error. Pero como es un simple script podéis corregirlo y personalizarlo vosotros mismos (he procurado mantener la legibilidad del código lo mejor posible), y si es muy grave me lo comentáis por aquí y edito el mensaje para corregirlo. Yo he realizado varias pruebas y me ha funcionado todo correctamente así que espero que no me acribilléis con muchos reportes XD Y eso es todo, espero que os pueda ser útil
  3. Apt-fast es un script shell que permite la paralelización de descargas de paquetes deb, tanto con apt-get, apt o aptitude. Éste nos permite descargar varios paquetes simultáneamente, desde diferentes mirros estableciendo varias conexiones por cada uno, en lugar de descargarlos de uno en uno como ocurre por defecto. Esto tiene una ventaja para el usuario, ya que puede exprimir al máximo su conexión a Internet para descargar los paquetes deb mucho más deprisa, pero también tenemos que tener en cuenta el lado del servidor, ya que las descargas en paralelo, para quien las sirve, suponen trabajo extra y no son ni remotamente tan divertidas como para quien los descarga. En este sentido, además de no exagerar con el número de conexiones y descargas en paralelo, tendremos a bien definir varios mirrors en el archivo de configuración, para no sobrecargar uno sólo, sino hacer descargas de distintos paquetes desde diferentes servidores cada uno. PPA Existe un reporitorio PPA desde el que podemos descargar e instalar Apt-fast. Tan sencillo como add-apt-repository ppa:saiarcot895/myppa aptitude update aptitude install apt-fast Manualmente Pero como ya nos conocemos, vamos a indicar también cómo instalar el script manualmente desde github. Como dependencias tendremos los paquetes aria2 y, obviamente, git. El proceso es tan sencillo como clonar el repositorio github, copiar el binario del script a /usr/bin (con permisos de ejecución) y sus archivo de configuración a /etc aptitude install aria2 git git clone https://github.com/ilikenwf/apt-fast /tmp/apt-fast cd /tmp/apt-fast cp apt-fast /usr/bin chmod +x /usr/bin/apt-fast cp apt-fast.conf /etc Bash completion La opción de autocompletado bash es muy útil a la hora de trabajar con paquetes, así que nos conviene activar dicha opción antes de empezar a lidiar con apt-fast cp completions/bash/apt-fast /etc/bash_completion.d chown root:root /etc/bash_completion.d/apt-fast . /etc/bash_completion Zsh completion Igualmente, sin el lugar de bash nos valemos de zsh, la situación es la misma, pero el proceso ligeramente distinto. cp completions/zsh/_apt-fast /usr/share/zsh/functions/Completion/Debian chown root:root /usr/share/zsh/functions/Completion/Debian/_apt-fast source /usr/share/zsh/functions/Completion/Debian/_apt-fast Páginas Man Porque en algún momento puede que necesitemos consultar el manual cp ./man/apt-fast.8 /usr/share/man/man8 gzip -f9 /usr/share/man/man8/apt-fast.8 cp ./man/apt-fast.conf.5 /usr/share/man/man5 gzip -f9 /usr/share/man/man5/apt-fast.conf.5 Configuración Apt-fast cuenta con un asistente, que nos aparecerá tanto al instalar el paquete como al invocar la orden: dpkg-reconfigure apt-fast Pero ya que nos hemos estado ensuciando las manos desde el principio, voy a seguir con la configuración manual. El archivo de configuración de apt-fast está bien comentado, así que me limitaré a hablar de las opciones más relevantes en nuestro caso dentro de /etc/apt-fast.conf: Por defecto utilizará apt-get, pero los que ya me conocen saben que en mi caso siempre recomiendo aptitude en su lugar, así que: Definir mirrors El listado de mirrors es muy importante, como ya hemos dicho, así que nos tomaremos un momento para definirlos. No es necesario que los especifiquemos tal y como los tenemos en /etc/apt/sources.list, sólo necesitamos la dirección del mirror, ni ramas ni opciones ni nada por el estilo, tal y como se expresa en los ejemplos, simplemente una serie de direcciones separadas por comas: Número máximo de conexiones, definido por _MAXNUM. El valor por defecto es de 5, es decir, 5 descargas en paralelo, que es un valor bastante bueno, así que salvo que tengamos otros planes, podemos dejarlo así (¿Han visto cuantos mirros he definido antes? ) Máximo de conexiones por servidor. De nuevo el valor por defecto es más que suficiente Descargando e instalando paquetes Apt-fast no se diferencia de las herramientas utilizadas hasta ahora. De hecho, hemos definido la que utilizará por defecto, así que las opciones a utilizar serán las mismas que apt-get o aptitude, sólo que el comanda será apt-fast Repositorio github https://github.com/ilikenwf/apt-fast
  4. hay un nuevo lenguaje para hacer que Estados Unidos vuelva a ser un gran país. https://www.unocero.com/2016/01/23/trumpscript-el-lenguaje-de-programacion-de-donald-trump/
  5. Saludos. Hay bases de datos públicas las cuales te las puedes bajar, por ejemplo el INE (Instituto Nacional de Estadística), y trabajar con ellas y hacer diversos estudios. Lo malo es que para trabajar con estos datos, por lo general, necesitas programas de pago y que sólo funcionan bajo windows. Pero también te dan la opción de bajártelos en formato csv y así poder importarlos a base de datos MySql. Me surgió la pega de que al ser bases de datos muy grandes el gestor de MySql, phpmyadmin, no puede con ellas, da errores múltiples, de tiempo de ejecución, etc, y después de hacer varias configuraciónes en php.ini seguía sin poder importarlas. Encontré por la red un script en bash para hacer esa importación masiva (mérito a su autor), pero me seguía fallando y le hice unos "retoques" y ahora me funciona de maravilla. En el script hay que poner el nombre de la base de datos que has creado previamente (ten en cuenta que vas a importar tablas), el usuario de la base de datos, la contraseña y la ruta del directorio donde están los archivos csv, ya sea un archivo o varios, te creará una tabla por cada archivo que haya. Aquí el script: #!/bin/bash # By brian@brianyoungblood.com to keep original files and import based on tab delimited data # orginal script based on work from Eric London. http://ericlondon.com/bash-shell-script-import-large-number-csv-files-mysql # show commands being executed, per debug #set -x # define database connectivity _db="nombre_bade_de_datos" _db_user="usuario" _db_password="contraseña" # define directory containing CSV files _csv_directory="/directorio/donde/estan/csv" # go into directory cd $_csv_directory # get a list of CSV files in directory _csv_files=`ls -1 *.csv` # loop through csv files for _csv_file in ${_csv_files[@]} do # remove file extension _csv_file_extensionless=`echo $_csv_file | sed 's/\(.*\)\..*/\1/'` # define table name _table_name="${_csv_file_extensionless}" # get header columns from CSV file, creándola como un array _header_columns=(`head -1 $_csv_directory/$_csv_file | tr ',' '\n' | sed 's/^"//' | sed 's/"$//' | sed 's/ /_/g'`) # Crea un array con los datos de la segunda fila _header_columns_numero_texto=(`head -2 $_csv_directory/$_csv_file | tail -1 | tr ',' '\n' | sed 's/^"//' | sed 's/"$//' | sed 's/ /_/g'`) _header_columns_string=`head -1 $_csv_directory/$_csv_file | sed 's/ /_/g' | sed 's/"//g'` echo "header============>${_header_columns[@]}" echo "header============>$_header_columns_string" # ensure table exists mysql -u $_db_user -p$_db_password $_db << eof CREATE TABLE IF NOT EXISTS \`$_table_name\` ( id int(11) NOT NULL auto_increment, PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_spanish2_ci eof # Se hace un bucle for con el numero de campos, si el dato de la segunda fila es numerico o texto asi crea el campo for (( c=0; c<${#_header_columns[@]}; c++ )) do if [[ ${_header_columns_numero_texto[$c]} =~ [[:alpha:]] ]] ; then mysql -u $_db_user -p$_db_password $_db --execute="alter table $_table_name add column ${_header_columns[$c]} text" else mysql -u $_db_user -p$_db_password $_db --execute="alter table $_table_name add column ${_header_columns[$c]} Float" fi done # import csv into mysql mysqlimport --local --ignore-lines=1 --fields-enclosed-by='"' --fields-terminated-by=',' --lines-terminated-by="\n" --columns=$_header_columns_string -u $_db_user -p$_db_password $_db $_csv_directory/$_csv_file done exit Edito: He mejorado un poco el script. Antes creaba todos los campos tipo texto.... ahora detecta si los datos son texto o numero y así los crea. Bueno, espero que a alguien le sirva y le funcione bien. Saludos
  6. Hola, Os escribo a ver si pueden ayudarme a solventar una duda. Estoy creando un script, el cual básicamente, ejecuta la acción de reproducir unos audios y lleva a cabo la acción de unos "mirrors" a través de Lftp. El tema es que a la hora de poder ejecutar estas acciones o no, quiero condicionarlo a través de unas variables. Una de estas variables sería la conexión o no a Internet. Poniendo en el caso de que si hay Internet, me entre a ejecutar la acción (reproductor) y si no la hay (conexión) me ejecute otros comandos. Hay algún comando que pueda darme esta información y que pueda guardarla en la variable? Estuve probando con "ping" bajo mi red local, y he podido observar que me dice cuando estoy conectado (recibiendo datos) y cuando no. Pero no se como podría utilizar esta info para usar como condicionante. Espero puedan ayudarme y si necesitan más información, háganmelo saber. Saludos y gracias de antemano.
  7. Yo uso Git para soncronizar mis documentos entre mis PCs. El problema que estaba teniendo es que a veces me olvidaba de sincronizar antes de apagar la PC, entonces hice un script que ejecuto justo antes de que se apague el equipo. El script no hace nada solo, va preguntando que hacer. Por si alguien le sirve lo pongo aca, uno puede agregarle todos los repositorios que uno quiera. Va pasando uno por uno, lo que hace es: Si hay modificaciones sin guardar Uno puede pedir que el script agregue, haga commit, pull y push solo. Lo único que hace falta hacer es poner el nombre del commit Sino uno puede pedir una shell para hacer cosas manualmente, y con "exit" volver al script Sino se puede saltear y no hacer nada Si no hay modificaciones pero hay commits para pushear Uno puede pedir que el script haga pull y push solo Sino uno puede pedir una shell para hacer cosas manualmente, y con "exit" volver al script Sino se puede saltear y no hacer nada Si no hay nada que hacer en este repositorio Uno puede pedir que el script haga pull solo Sino uno puede pedir una shell para hacer cosas manualmente, y con "exit" volver al script Sino se puede saltear y no hacer nada El script es este, al final hay que poner los paths a los repositorios:
  8. Hola a todos, sé que me he presentado hace nada, pero ya que estoy planteo una duda que me ha surgido en el trabajo; estoy tratando de diseñar un script para un sistema de colas, basado en bash que se encargue (entre muchas otras cosas, pero esta es la que más problemas me está dando) de hacer una comprobación de si las particiones de los nodos (cada nodo es un ubuntu) está montada, y si no lo está montarla, mi duda recae en como comprobar con un script esto, puede que sea un script muy básico para alguno de vosotros, pero yo os aseguro que no soy capaz de plantearlo para que me funcione. Espero vuestra ayuda, la necesito! Un saludo.
  9. Hola, os escribo para ver podéis solucionarme un problema que me esta dando varios dolores de cabeza. Estoy utilizando una raspberry, con el Raspbian, de cara a andar trasteando e introduciéndome en el mundillo de la frambuesa. Una de las pruebas que estoy llevando a cabo, es la incorporación de un pulsador para poder apagar la Raspberry. He incorporado un script para ello. Es el siguiente: # Import the modules to send commands to the system and access GPIO pins from subprocess import call import RPi.GPIO as gpio # Define a function to keep script running def loop(): raw_input() # Define a function to run when an interrupt is called def shutdown(pin): call('halt', shell=False) gpio.setmode(gpio.BOARD) # Set pin numbering to board numbering gpio.setup(7, gpio.IN) # Set up pin 7 as an input gpio.add_event_detect(7, gpio.RISING, callback=shutdown, bouncetime=200) # Set up an interrupt to look for button presses loop() # Run the loop function to keep script running Dicho programa consigo hacerlo correr en el terminal y funciona. O sea, cuando presiono el pulsador, se apaga. El problema esta en que el script inicia con error al arrancar la maquina. Lo incorporo al archivo: sudo nano /etc/rc.local python /home/off.py El error en sí viene marcado en la línea: File "/home/off.py, line 17, in <module> loop() # Run the loop function to keep script running ​File "/home/off.py, line 7, in loop raw_input() EOFError: EOF when reading a line A ver si podéis ayudarme a solucionar el problema. Llevo poco tiempo en el mundo GNU/Linux y se me escapan muchas cosas de este amplio universo. Salud y gracias por adelantado
  10. Hice un script que ejecuta los comandos de este tutorial de CyberAngel en ubuntuforums, sirve para hacer Timelapses o Stop in Motions. Los Timelapses son videos creados a partir de varias (muchas) fotos tomadas a intervalos de por ejemplo 5 segundos, cuando se pasan esas fotos varias veces por segundo parece un video a cámara rápida. Los Stop in Motion son parecidos nada más que en vez de tomar las fotos cada un cierto tiempo se toman manualmente y se cambia algo de la escena entre cada foto Ejemplo de Timelapse: Ejemplo de Stop in Motion: El script hace un video con mencoder de las fotos que tengas en la carpeta seleccionada, también se le debe elegir los FPS (cúantas fotos por segundo se ven en el video) Script: Script 2, Es un deflicker, ajusta el brillo de las imagenes para que el video no parpadee cada vez que por ejemplo una nube tape el sol y la foto salga más brillante: https://github.com/cyberang3l/timelapse-deflicker/blob/master/timelapse-deflicker.pl Uso: Copiar y pegar el script que esta en el spoiler en un archivo llamado timelapse.sh Hacer ejecutable al script haciendo click derecho > propiedades o con chmod +x timelapse.sh Descargar todos los programas necesarios, creo que son mogrify perlmagick mencoder libfile-type-perl libterm-progressbar-perl Guardar el segundo script del deflicker en un archivo llamado timelapse-deflicker.pl Poner los dos archivos en una misma carpeta Ejecutar el script con ./timelapse.sh [carpeta/con/las/fotos] [resolucion] [formatodelasfotos] fps. Por ejemplo: ./timelapse.sh TimelapseNubes/Fotos 1920x1080 *.jpg 30 Cuando termine va a aparecer video.avi en la ubicacion del script Si hace falta se puede comprimir el video con avconv o ffmpeg. Por ejemplo: ffmpeg -i video.avi -c:v libx264 -preset slow -crf 15 video-final.mkv
  11. Hola, soy nuevo en Linux y ando bastante perdido. Asique si alguien me pudiese ayudar, paso por paso, se lo agradecería. Uso Lubuntu con LXDE. El caso es que quiero crear un script ejecutable de terminal en el escritorio, que al darle doble click en escritorio, me habra la aplicación terminal (Lxterminal) y me ejecute el comando "sudo nast -m" automáticamente. Yo lo que intento es crear un script (script.sh) cuyo código es: Pero al ejecutarlo, con doble click, no me responde (no hace nada). He seleccionado "Abrir con LxTerminal" Si me pudieseis ayudar, os estaría muy agradecido (No tengo experiencias anteriores con Linux, asique mis conocimientos son muy limitados) Un saludo
  12. El proyecto ODUSO automatiza la instalación de algunos temas GTK incluidos los iconos. También incluye un buscador de aplicaciones para incluir su instalación mediante ppa con el script generado. Al final de la página se pueden incorporar diversas opciones incluidas las de actualizar paquetes o repositorios. El script generado también puede hacer un reboot después de ejecutarse o apagar el equipo; incluso puede estarse quietecito (do nothing). Está pensada para las versiones Precise y Trusty de Ubuntu, y para las derivadas Elementary OS Luna y Freya. Permite elegir el tipo de iconos (Moka, Numix, El Faenza...) y el tema GTK, para generar el script que lo instalará todo. Dependiendo de la versión de Ubuntu habrá disponibles más o menos temas GTK: para Precise y Luna está disponible Numix, mientras que para Trusty y Freya también se incluyen los temas Vertex y Paper. Una vez generado el script pulsando en el botón «Generate» este se puede o ver en una página web, o enviarlo por correo electrónico, o bajar el archivo con el script. Por ahora se ofrece para usuarios de Ubuntu y Elementary, aunque tienen intención de extender sus scripts a otras distribuciones.
  13. Buenos días compañeros! Estoy comparando código en bash y en python, así que he decidido compartirlo con vosotros. Iré publicando algunos scripts cuya comparación me ha gustado VS. Empezamos con algo simple: Listado del contenido de un directorio: ## Bash: ls -l /tmp/ ## Python: import subprocess subprocess.call(["ls", "-l", "/tmp"]) Obtener información del sistema: ## Bash ---------- #!/usr/bin/env bash function uname_funct { UNAME="uname -a" printf "Obteniendo informacion del sistema con el comando $UNAME : \n\n" $UNAME } function disk_funct { DISKSPACE="df -h" printf "Obteniendo informacion del disco duro con el comando $DISKSPACE : \n\n" $DISKSPACE } ----------- ## Python: ----------- #!/usr/bin/env python import subprocess def funcion_uname(): uname = "uname" uname_arg = "-a" print "Obteniendo informacion del sistema con el comando %s :\n" % uname subprocess.call([uname, uname_arg]) def funcion_disco(): diskspace = "df" diskspace_arg = "-h" print "Obteniendo informacion del sistema con el comando %s :\n" % diskspace subprocess.call([diskspace, diskspace_arg]) def main(): funcion_uname() funcion_disco() main() Utilidad en Python: Autocompletado!! ## Iniciar python desde el terminal y escribir: import rlcompleter, readline readline.parse_and_bind('tab : complete') Cuando vaya avanzando, iré completándolo Espero que os guste y os sirva de algo
  14. Hola Estoy haciendo algunos script en bash, perl y cosas así que tienen que usar contraseñas, por ejemplo, para acceder a un correo electronico. Normalmente lo que hago para estos casos es una de estas opciones: Almacenar la contraseña en un fichero al que solo tiene permiso de lectura mi usuario Esto no se si es suficiente ni lo mejor, pero además no siempre me vale porque a veces lo que quiero es crear un script que sea ejecutado por otros usuarios. Usuarios que no quiero que sepan la contraseña que se usa pero que puedan ejecutar el comando que la usa Para estos casos lo que estoy haciendo es lo siguiente Creo el script como root y luego creo un grupo que tiene permiso para ejecutar como sudo dicho comando, y añado a ese grupo los usuarios que quiero que puedan ejecutar el comando pero que no puedan leer el fichero de configuración en el que esta la contraseña Un ejemplo se puede ver aqui: http://apuntes.pusku.com/914 Pero mi pregunta es ¿no hay una manera mejor o más correcta de hacer estas cosas? He probado cosas más sencillas como por ejemplo: pi@bot /tmp $ sudo chmod 771 ejemplo.sh pi@bot /tmp $ ls -lh ejemplo.sh -rwxrwx--x 1 root root 25 sep 27 00:19 ejemplo.sh pi@bot /tmp $ ./ejemplo.sh /bin/bash: ./ejemplo.sh: Permiso denegado Pero no funciona. Crei que si se tenia permiso de ejecución y no de lectura ni escritura se podria ejecutar de todos modos, pero parece que no. Muchas gracias por adelantado.
  15. Hoy pude hacer algo que debería existir en todas las computadoras y sistemas operativos, un atajo de teclado para invertir la capitalización de las letras de un texto. Por ejemplo "Soy Feliz!!" pasaría a ser "sOY fELIZ!!" La idea es que uno se pone a escribir apurado, por escribir sin mirar se da cuenta que escribió una oración mientras tenía Bloq Mayus activado. Entonces hay que borrar y empezar de nuevo, salvo que uses Linux!. Entonces seleccionas el texto, apretás Ctrl-B (O su atajo de teclado de preferencia) y seguidamente Ctrl-V para pegar el texto convertido, como el texto erróneo ya estaba seleccionado Ctrl-V va a sobreescribir todo el texto Situación 2: Te ponés a buscar la tarea en internet y lo que estás buscando está todo en mayúsculas, a no desesperar. Seleccionás todo, apretás Ctrl-B y pegás en tu editor de texto favorito con Ctrl-V. Soy feliz Entonces lo que hace Ctrl-B es algo así como copiar el texto invertido Por favor no me digan que esto ya existía, porque o si no me hubieran avisado antes jaja El script es este: #!/bin/bash xclip -selection primary -o | tr [:lower:][:upper:] [:upper:][:lower:] | xclip -selection clipboard Yo lo hice buscando en internet como copiar, como pegar, y como invertir la capitalización, y después junté todo en un script. Por lo que entiendo es así: La primer línea le dice a la computadora que el archivo es un programa, después: xclip -selection primary -o Muestra el texto que está en el portapapeles primario, o sea ese que al presionar el boton del medio del mouse pega el texto seleccionado anteriormente. Entonces el comando muestra la selección Luego con el símbolo "|" lo que uno hace es "pasarle" la salida de un comando a otro. Entonces pasamos la salida del comando anterior al comando siguente que es este: tr [:lower:][:upper:] [:upper:][:lower:] Eso convierte todas las letras minúsculas que encuentra a mayúsculas y viceversa, luego con otro "|" pasamos la salida de ese comando al siguiente: xclip -selection clipboard Ese comando guarda en el portapapeles (otro portapapeles, no el primario, este portapapeles es el que funciona con Ctrl-V y Ctrl-C) todo lo que le pasamos Por último manualmente pegamos el texto guardado en el portapapeles con Ctrl-V Acá explico cómo "instalar" este script por si no saben cómo: Primero peguen todo el script (el primer cuadro de código) en un archivo de texto con un nombre original, "invertirCapitalizacion.sh" es lo más original que se me ocurre. El ".sh" no hace falta, pero por lo que sé por convención guardamos los scripts con esa extensión Después al archivo guardado le hacemos click derecho, propiedades y en la parte de permisos ponemos marcar como ejecutable (desde la consola de puede usar el comando chmod) Por último hay que hacer que al presionar Ctrl-B se ejecute el programa. Eso depende de cada distribución, tiene que estar en preferencias o por ahí
  16. Script casero para resolver dependencias en Slackware Escribi un pequeño script para obtener un listado ordenado ( ordenado por prioriad de dependencia) de las dependencias necesarias (solo lista las que necesitas en tu sistema) para instalar un paquete en Slackware. Es para agilizar un poco la resolucion de dependencias y no hacerlo de forma tan manual, es cierto que existen paquetes que resuelven las dependencias solos, pero yo prefiero no usarlos y ver que estoy instalando. Hago uso de la pagina SlackBuilds para obtener informacion de los paquetes, ya que uso ese repositorio mediante Sbopkg para instalarlos de forma mas rapida. El script por ahi es un poco precario, pero funciona bastante bien, resuelve las dependencias de forma recursiva , avisa si ya esta instalado, o si no es necesario instalar ninguna dependencia. #!/bin/bash #=============================================================================== # # FILE: dependencias.sh # # USAGE: ./dependencias.sh paquete # # DESCRIPTION: Resolver dependencias para un paquete determinado, el script # proporcionas un listado ordenado de paquetes a instalar # para sistemas basados en SLACKWARE. # # OPTIONS: # REQUIREMENTS: Curl, wget, gawk # NOTES: - # AUTHOR: Skilltik Henry Suarez skilltik@gmail.com # ORGANIZATION: --- # CREATED: 17/04/14 # REVISION: 0.2 #=============================================================================== packages_dir=/var/log/packages/ function resuelve(){ for paquete in $@ do lista='' lista=`ls $packages_dir | grep $paquete-'[[:digit:]]*\>' ` if [ "${#lista}" == 0 ] then c=" " echo "$paquete$c" >> resul curl -s "slackbuilds.org/result/?search=$paquete&sv=14.1" > salida.html ; variable=`grep -i $paquete\/ salida.html | gawk '{print $6}' FS="\"" | gawk '{print $4}' FS="/"` nombreokpaquete=`grep -i $paquete\/ salida.html | gawk '{print $6}' FS="\"" | gawk '{print $5}' FS="/"` wget -q http://slackbuilds.org/slackbuilds/14.1/$variable/$nombreokpaquete/$nombreokpaquete.info ; vari=`grep REQUIRES $nombreokpaquete.info` vari=`echo ${vari:10: -1}` rm *.info if [ "${#vari}" != 0 ] then resuelve $vari fi fi done } for arreglo in $@ do curl -s "slackbuilds.org/result/?search=$arreglo&sv=14.1" > verifica.html ; verificapaq=`grep -i "No results" verifica.html ` rm verifica.html if [ "${#verificapaq}" == 0 ] then resuelve $arreglo if [ -f resul ] then tac resul > resul2 cat resul2 | tr -s " " "\n" > resul awk '!array_temp[$0]++' resul > resul2 cat resul2 | tr -s "\n" " " > resul tr -d "\n" < resul > resul2 echo "|-----------------------------------------------------------|" echo "Las dependencias a resolver para $arreglo son :" cat resul2 echo " " echo "|-----------------------------------------------------------|" echo " " rm resul resul2 rm salida.html else echo "|-----------------------------------------------------------|" echo "No hay dependencias por resolver para $arreglo " lista=`ls $packages_dir | grep $paquete-'[[:digit:]]*\>' ` if [ "${#lista}" != 0 ] then echo "$lista ya se encuentra instalado" fi echo "|-----------------------------------------------------------|" fi else echo "|-----------------------------------------------------------|" echo " $arreglo no existe en base de datos" echo "|-----------------------------------------------------------|" fi done Por ejemplo, consideremos este listado de paquetes que tenemos en mente para instalar: dvdrip openlp paqueteimaginario ffmpeg tan solo ejecutamos el scritp de esta forma: ./dependencias.sh dvdrip openlp paqueteimaginario ffmpeg Y con esto estamos listo para instalarlos de la forma que prefieran, yo uso SBopkg, asi que para instalar Dvdrip, solo ejecuto : sbopkg -i "transcode perl-libintl perl-extutils-pkgconfig perl-extutils-depends perl-glib perl-cairo perl-pango perl-gtk2 perl-event dvdrip" y se va a ir instalando en el orden necesario. Dudas, errores o sugerencias me avisan.
  17. Estoy intentando descargar unos panoramas de gigapan.com para poner de fondo (bueno, puede que sea ilegal pero descargar un fondito para mí nada más no pasa nada o no? ) Para eso hay un programita escrito en Python que es gigapanDownloader.py (click derecho, guardar como...) EDIT: Esta es la página del programa: https://github.com/DeniR/Gigapan-Downloader-and-stitcher El problema es que no me anda. Por lo que veo el programa primero descarga la imagen en pedazos y luego las une con Imagemagick, las imágenes las descarga bien pero no anda la parte de unir. Como ejemplo pongo lo que pasa cuando descargo el panorama más chico que hay en gigapan: el 2427. para descargarla hay que poner en un terminal "python gigapanDownloader.py 2427". Al hacer eso me aparece esto en una terminal: python gigapanDownloader2.py 2427 600 174 256 3 1 1 http://www.gigapan.org/get_ge_tile/2427/1/0/0 0000-0000.jpg http://www.gigapan.org/get_ge_tile/2427/1/0/1 0000-0001.jpg http://www.gigapan.org/get_ge_tile/2427/1/0/2 0000-0002.jpg Stitching... Traceback (most recent call last): File "gigapanDownloader2.py", line 76, in <module> subprocess.call('"'+imagemagick+'" -depth 8 -geometry 256x256+0+0 -mode concatenate -tile '+str(wt)+'x '+str(photo_id)+'\\*.jpg '+str(photo_id)+'-giga.'+outputformat) File "/usr/lib/python2.7/subprocess.py", line 522, in call return Popen(*popenargs, **kwargs).wait() File "/usr/lib/python2.7/subprocess.py", line 709, in __init__ errread, errwrite) File "/usr/lib/python2.7/subprocess.py", line 1326, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory Al parecer el error está en esta línea del programa: subprocess.call('"'+imagemagick+'" -depth 8 -geometry 256x256+0+0 -mode concatenate -tile '+str(wt)+'x '+str(photo_id)+'\\*.jpg '+str(photo_id)+'-giga.'+outputformat) Lo malo es que el error que tira no se entiende nada . Lo que sería más probable es que la ruta al programa "montage" de imagemagick esté mal. Pero yo modifiqué el programa para que use mi ruta, que es: "/etc/alternatives/montage". Yo sé que esa ruta está bien porque cuando yo corro montage por mí mismo sí funciona, por ejemplo esto en una terminal sí funciona: /etc/alternatives/montage -depth 8 -geometry 256x256+0+0 -mode concatenate -tile 2x 2427/*.jpg 2427-giga.tif A esa línea la hice viendo mas o menos cómo reemplazar los argumentos Por las dudas este es mi script modificado: También probé a ver si el problema era "subprocess.call()" que no funcionaba, pero cuando hacía "subprocess.call("ls")" sí funciona Entonces el problema es lo que está dentro de "subprocess.call()", pero como no se de Python no lo puedo solucionar. Otro dato es que dice que se necesita Python 2 en vez de Python 3. Pero no sé cómo reemplazar las versiones
  18. Universal Decompress es un sencillo script que permite descomprimir de forma universal diversos formatos de ficheros en GNU/Linux con un solo comando, evitando tener que acordarnos de los distintos comandos y opciones de tar rar zip... #!/bin/bash #Universal Decompress, Este Script sirve para descomprimir ficheros en diferentes formatos #Copyright (C) 2013 Francisco Dominguez Lerma # #This program is free software; you can redistribute it and/or #modify it under the terms of the GNU General Public License #as published by the Free Software Foundation; either version 2 #of the License, or (at your option) any later version. # #This program is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. # #You should have received a copy of the GNU General Public License #along with this program; if not, write to the Free Software #Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. nombre=$1 nombre_extension=${nombre#*.} version=0.1 function mostrar() { echo ------------------------------------ echo "Tipo de archivo: $nombre_extension" echo ------------------------------------ echo ------------------------------------ echo "Nombre de archivo: $nombre" echo ------------------------------------ } function comprobar() { if [ $error == 0 ]; then echo echo -e "\e[32mArchivos extraidos con éxito :)" echo -e "\e[39m" echo elif [ -z "$nombre" ]; then echo Debes escribir un nombre de archivo, para mostrar la ayuda escriba "ud --help" exit elif ! [ -e "$nombre" ]; then echo El fichero $nombre no existe, para mostrar la ayuda escriba "ud --help" exit else echo echo -e "\e[31mError al extraer los archivos :(" echo -e "\e[39m" echo fi } case $nombre_extension in *tar.gz) mostrar tar zxf "$nombre" error=$? comprobar;; *tar.bz2) mostrar tar jxvf "$nombre" error=$? comprobar;; *gz) mostrar gzip -d "$nombre" error=$? comprobar;; *bz2) mostrar bzip2 -d "$nombre" error=$? comprobar;; *rar) mostrar unrar x "$nombre" error=$? comprobar;; *zip) mostrar unzip "$nombre" error=$? comprobar;; *tar) mostrar tar -xvf "$nombre" error=$? comprobar;; #En esta linea es donde se deben de añadir más opciones de la construcción case con la misma estructura que los demás para añadir más formatos para descomprimir --help) echo echo echo ---------- Ayuda ---------- echo echo Universal Decompress le sirve para descomprimir echo archivos de forma sencilla e universal echo echo El único argumento necesario es el archivo a descomprimir echo echo Ejemplo: ud mis_fotos.tar.gz echo echo --------------------------- echo echo exit;; --version) echo --------------------------- echo "Version: $version" echo ---------------------------;; *) error=1 comprobar echo ------------------------------- echo Formato no valido echo ------------------------------- echo echo echo Este script no entiende la extensión de archivo $nombre_extension echo echo Para mostrar la ayuda escriba "ud --help" echo echo;; esac También podéis descargarlo de http://sourceforge.net/projects/easydecompress/ El script es muy sencillo, no es nada del otro mundo pero puede ser de ayuda si en un momento dado tenéis que descomprimir por consola y no os acordais muy bien de tar, para instalarlo simplemente copiar el sh en /bin darle permisos de ejecución y listo, para usarlo: ud mi_fichero.rar ud mi_fichero.tar.gz ud mi_fichero.tar.bz2 ud mi_ficherio.zip Lo que si es importante es que el nombre incluya la extensión, ya que es lo que reconoce para descomprimirlo de una forma u otra, bueno lo dicho, espero que os sea útil. Saludos
  19. Un sencillo (y cutre) script que me he hecho para descargar vídeo o audio de youtube, requiere los paquetes youtube-dl y ffmpeg. Pensé que a alguien más le puede ser útil así que lo he "formalizado" un poco Al seleccionar vídeo apareceran los distintos formatos del vídeo disponibles para descargar. Al seleccionar audio, éste se extraera a partir del vídeo con la máxima calidad disponible (normalmente en formato .m4a) Saludos
  20. El objetivo de estas líneas es la de mostrar como ejecutar un script en Ubuntu, sin escribir ningún comando en nuestra terminal. Esto va dedicado a todas aquellas personas a las que les da un poco de fobia el intérprete de comandos. Empecemos, creamos un script que podemos guardar en nuestro escritorio. Abrimos gedit y escribimos lo siguiente. #!/bin/sh echo Script de prueba echo ...dentro de 3 seg se inicia el script,o cierra la terminal sleep 3s Después los guardamos con el nombre que queramos.sh, ahora hacemos clic botón derecho y propiedades. En la ventana que aparece pinchamos la pestaña "permisos" y tildamos "permitir abrir el archivo como un programa". Una vez hecho esto hacemos doble clic y ya está, se ejecutará el script. En casa de que no funcione abrir la aplicación "gconf" y buscáis la entrada org->gnome->nautilus->preferences y seleccionamos la opción executable-text-activation. Por defecto esta en diplay, elegimos "ask" y cuando ejecutemos el scrpit el sistema nos preguntará que queremos hacer. Seleccionamos Ejecutar en terminal y listo!!!
  21. Esta vez no es maestro, sino maestra. Niky45 nos deja este interesante script para apagar nuestro equipo si están un tiempo determinado sin ninguna actividad. La idea es que el sistema se apague solo tras X minutos de inactividad, a no ser que decidamos, esa vez, que debe seguir funcionando. Es decir, un demonio en bash que monitorice la actividad, y que podamos parar en cualquier momento. Los requisitos para que este script funcione son: Bash (como no podia ser de otra manera) xprintidle, que nos dira cuanto tiempo llevan inactivas las X (Lo encontraremos en repositorios) screen, que lanzara el daemon y lo mostrara en una consola (Lo encontraremos en repositorios) Una vez hayamos instalado Xprintidle y screen, el script en cuestión es el siguiente: [ "$1" ] && TIMEM=$(("$1" * 60 * 1000)) || TIMEM=$(( 60 * 60 * 1000 )) # Permite setear el tiempo en minutos vía línea de comandos #NOTA: xprintidle da el tiempo en milisegundos. [ "$2" ] && INTERVAL="$2" || INTERVAL="1m" TIME=$(( $TIMEM / (60*1000) )) echo "El sistema se apagará tras $TIME minutos de inactividad" while [ true ]; do [ $(xprintidle) -gt "$TIMEM" ] && poweroff sleep "$INTERVAL" ELAP="$(( $(xprintidle) / (60*1000) ))" echo -e "\033[3;5f Tiempo de inactividad: $ELAP min \033[4;5f restantes para el apagado: $(( $TIME - $ELAP )) min" done Se copia al directorio de scripts (Como puede ser /usr/local/bin), y se le llama desde algun sitio, en este caso desde screen: (~/.screenrc) ##launchers screen -t shell 1 bash screen -t root 0 su #screen -t info 0 screen -c ~/.altscreen screen -t autoshutdown 2 /usr/local/bin/autoshutdown select 1 Tambien se le puede llamar directamente con el siguiente formato: Donde MINUTOS son los minutos de inactividad hasta el apagado, e INTERVALO el tiempo entre iteraciones (es decir, el timepo que pasa entre comprobacion y comprobacion), con formato sleep (10m = 10 minutos, o se puede especificar directamente en segundos) Podemos hacer que el script se ejecute durante el arranque, bien incluyéndolo en /etc/init.d/ o donde dicte nuestra distribución o sistema de arranque o bien ejecutarlo manualmente cuando queramos, eso ya queda al gusto y necesidades de cada uno NOTA: Para los que tenga un portatil, dado que pueden estar conectados a la correinte o tirando de batería, tendremos que ajustar los tiempos en el segundo caso, pues no tiene mucho sentdio que se apague en una hora si la batería se acaba antes. La condicion para la bateria vendria a ser algo asi. Es necesario tener instalado acpi instalado (esta en repos) [[ "$(acpi -V |grep -i "Adapter" |cut -c 12-)" != on-line ]] && sleep $INTERVAL && continue E iría justo después de entrar en el bucle while. OJO, no poner un intervalo de menos de 5 minutos. Es posible un intervalo dinámico, bastaria con poner sleep 10m, para que espere 10 minutos a ver si estamos con bateria, y activar el resto del bucle con el intervalo especificado al principio. http://man-linux.comli.com/?p=331
  22. Muy buenas. A ver si alguien puede ayudarme porque no se si donde mirar. Me explico. El otro día me conecte por SSH a un servidor linux e hice un script que comprobaba si un proceso se estaba ejecutando y si no lo estaba lo lanzaba de nuevo con nohup. Bien, como vi que iba lo añadí al crontab con "crontab -e" para que se ejecutase cada hora y añadí al script que si tenía que relanzar el proceso me envíase un mail. A la siguiente hora recibí el mail pero el proceso estaba ejecutandose bien por lo que entendí que el script tenía algún error. Lo arreglé, cambié el nombre del script, cambié el subject del mail, cambié la línea del crontab... y cada hora sigo recibiendo el mail del antiguo script que ya no está en el crontab. Es más, ¡borré el script!. Si miro el crontab con "crontab -l" veo está el nuevo script que envía un mail diferente con otro texto, y del script antiguo no hay ni rastro. ¡Pero cada hora se ejecuta el que ya no está! O al menos cada hora recibo un mail como si se hubiese ejecutado! ¿Alguien sabe que puede pasar? Si no me he explicado bien, cualquier pregunta será bien recibida. Gracias. Sergio.
  23. Hola, soy nuevo por aca.. este es mi primer tema. Escribi un pequeño script que sirve para verificar si uno o mas paquetes estan instalados en el sistema, es muy util cuando se estan resolviendo dependencias para instalar un programa. Aca les dejo el script, es muy corto pero bastante util #!/bin/sh packages_dir=/var/log/packages/ for var in $@ do if !(ls $packages_dir | grep $var) then echo $var "no esta instalado" fi done Si el programa esta instalado devuelve la version instalada, y sino un aviso de que no se encuentra en el sistema. un ejemplo de uso: saludos!
  24. Lo primero es instalar el paquete wmctrl Abrimos un documento vacío y copiamos esto en el interior: #!/bin/sh if wmctrl -m | grep "mode: ON"; then exec wmctrl -k off else exec wmctrl -k on fi Renombramos a show_desktop.sh (por ejemplo) y le damos permiso de ejecución chmod +x show_desktop.sh La principal utilidad es que podemos crear un lanzador con el script, y añadirlo al panel tint2, al dash de gnome-shell, etc; docks que no soporten la función de mostrar el escritorio. Ejemplo en el panel tint2: Un saludo
  25. Un script que encontré para para verificar archivos sfv desde nautilus, ya que todavía no he encontrado ningún programa en linux que haga esto de forma gráfica. Se necesita tener instalado cksfv (programa para chequear sfv por consola) y zenity Copiar el contenido a un archivo vacío y renombrar a "CheckSFV.sh" (por ejemplo), mover al directorio "/home/TuUsuario/.gnome2/nautilus-scripts" como viene en la descripción (en nautilus 3.6 iría en "/home/TuUsuario/.local/share/nautilus/scripts") y dar permisos de ejecución: chmod +x /home/TuUsuario/.gnome2/nautilus-scripts/CheckSFV.sh Clickar con el botón derecho en un archivo sfv y buscar la entrada del menu de nautilus para verificarlo. Un saludo
×
×
  • Crear Nuevo...