Resultados 1 al 9 de 9

problema con variable en bash

  1. #1 problema con variable en bash 
    Medio
    Fecha de ingreso
    Feb 2010
    Ubicación
    /lost+found
    Mensajes
    71
    Descargas
    4
    Uploads
    0
    estoy haciendome un script para conectarme facilmente a internet, el wicd no me funciona y no tengo X para poner una gui.

    la cuestion es hacer con el iwconfig pero ahorrandome poner la contraseña cada vez.
    tengo un archivo con los pass guardados en formato:
    ESSID:KEY_ASCII

    en las pruebas cargo 2 variables, 1 manual con la contraseña y otra ke lo lee del fichero

    manual
    pass1=X0001XXXXXXXXX
    pass2=$(cat pass.txt | grep essid | cut -d ":" -f 2)

    entonces hago un
    echo $pass1
    echo $pass2
    son lo mismo

    pero al hacer el iwconfig

    iwconfig iface essid ESSID key s:$pass1
    me conecta, ningun problema, pero si le pongo el $pass2 me da un error de argumento invalido, cuando se escribe exactamente lo mismo

    lo que creo que es, es que al pasar la info del txt a la variable, se le da algun formato a la variable que el iwconfig no consigue reconocer, alguien sabe como puedo cargar este texto en la variable? o como transformarla para que sea aceptada?
    Citar  
     

  2. #2  
    Moderador Global
    Fecha de ingreso
    Aug 2005
    Mensajes
    6.279
    Descargas
    7
    Uploads
    0
    ¿Seguro que no hay ninguna diferencia en el contenido de las variables?

    Ejecuta el script con -x para ver el contenido de la variable al ejecutarse:

    Código:
    sh -x script.sh

    Salu2

    . . . . . . . . . . . . . . . . . . . .
    [[ NORMAS DEL FORO ]]
    . . . . . . . . . . . . . . . . . . . .
    __________
    Citar  
     

  3. #3  
    Avanzado
    Fecha de ingreso
    Jan 2010
    Mensajes
    813
    Descargas
    1
    Uploads
    0
    ¿Argumento inválido? ¿No estarás intentando meter una clave hexadecimal con el s: delante?
    Citar  
     

  4. #4  
    Medio
    Fecha de ingreso
    Feb 2010
    Ubicación
    /lost+found
    Mensajes
    71
    Descargas
    4
    Uploads
    0
    vale, veo el error, pero nose solucionarlo
    el password esta en ascii, seguro

    he mirado la longitud de la variable que carga del fichero y tiene 14 caracteres cuando deberia tener 13, pero le hago un echo y me sale el pass de 13c.
    le he hecho un
    > echo \"$pass2\"
    y me devuelve
    > "C00018DFE0273
    para ver si quedaba un espacio en blanco despues del ultimo caracter, pero las comillas no se cierran, eso puede ser por un salto de linea, tabulador o algo asi? como lo puedo borrar? o crear la var directamente sin este fallo?

    SOLUCIONADO

    le he puesto
    pass=${pass:0:13}
    y yaesta funciona perfecto

    gracias por la ayuda
    Última edición por fikus; 26-03-2010 a las 14:45
    Citar  
     

  5. #5  
    Medio
    Fecha de ingreso
    Feb 2010
    Ubicación
    /lost+found
    Mensajes
    71
    Descargas
    4
    Uploads
    0
    otro tema ya que estoy

    si pasa un fichero como argumento de un script pero su nombre contiene espacios, comas, etc. van con una barra \ delante, pero al pasarlo a variable se sustituye por su simbolo y si uso esa variable como ruta de fichero no me lo reconoce

    hay algun comando para sustituir todos los caracteres especiales por su caracter con barra? nose si me explicado

    tengo var=/ruta/fichero loquesea.ex
    y kiero ke me salga /ruta/fichero\ loquesea.ex

    estoy probando de sustituir con tr, pero seguro que hay algun comando o opcion que desconozco que los cambia todos

    pd: se que estoy pesado con el bash, pero esque estoy preparando un portatil con al grafica jodida y las tty sin scripts son muy pesadas...
    Citar  
     

  6. #6  
    Moderador Global
    Fecha de ingreso
    Aug 2005
    Mensajes
    6.279
    Descargas
    7
    Uploads
    0
    Yo lo que suelo hacer es utilizar herramientas que tratan directamente con los inodos, como find.

    Si tienes un directorio llamado "configuraciones" con los archivos
    "LEEME"
    "otras notas.txt"
    "uno.conf"
    "dos.conf"
    "tres o cuatro.conf"
    y quieres aplicar un script "script.sh", que toma como parámetro (primero y único) un archivo, a cada una de las configuraciones, puedes hacer algo como:

    Código:
    find "configuraciones" -name "*.conf" -exec script.sh {} \;
    Salu2

    . . . . . . . . . . . . . . . . . . . .
    [[ NORMAS DEL FORO ]]
    . . . . . . . . . . . . . . . . . . . .
    __________
    Citar  
     

  7. #7  
    Medio
    Fecha de ingreso
    Feb 2010
    Ubicación
    /lost+found
    Mensajes
    71
    Descargas
    4
    Uploads
    0
    kreo ke no nos hemos entendido o yo no lo he entendido. xD
    kuando le paso una direccion con espacios, en la variable se carga limpio, sin los \ que identifican los simbolos "raros" entonces kuando le paso la variable como argumento a otro comando (dentro del script) no me encuentra el archivo porque sin los \ me los coge como archivos separados aun poniendo "s
    Citar  
     

  8. #8  
    Moderador Global
    Fecha de ingreso
    Aug 2005
    Mensajes
    6.279
    Descargas
    7
    Uploads
    0
    Lo que digo es que tienes la posibilidad de tratar esos archivos directamente a través de sus inodos, en vez de complicarte con sus nombres, como en el ejemplo con find de mi post anterior.

    Lo más cómodo es asegurarse de usar siempre nombres que sólo contengan letras, números, guiones o puntos, pero entiendo que muchas veces hay que lidiar con entradas externas que no dependen de uno.

    Cuando no te quede más remedio que operar a través de los nombres de archivo (como te digo, debería poder evitarse siempre), siempre podrás usar otros métodos, como usar las comillas.

    Código:
    hacer_con.sh 'este archivo que contiene espacios' lo_que_sea
    convertir a octal los caracteres del nombre de archivo

    Código:
    $ mkdir test && touch test/'canción de la cigüeña'
    $ cd test && ls | od -t o1 -An
     143 141 156 143 151 303 263 156 040 144 145 040 154 141 040 143
     151 147 303 274 145 303 261 141 012
    $ # Ojo, el 012 final es el salto de línea y no forma parte del archivo
    sustituir caracteres con sed, tr, etc.


    Salu2

    . . . . . . . . . . . . . . . . . . . .
    [[ NORMAS DEL FORO ]]
    . . . . . . . . . . . . . . . . . . . .
    __________
    Citar  
     

  9. #9  
    Medio
    Fecha de ingreso
    Feb 2010
    Ubicación
    /lost+found
    Mensajes
    71
    Descargas
    4
    Uploads
    0
    vale, esto de od me puede servir, voy a hacer pruebas xD
    gracias
    Citar  
     

Temas similares

  1. Variable en un archivo de texto
    Por Esgrimidor en el foro PROGRAMACION DESKTOP
    Respuestas: 2
    Último mensaje: 27-09-2009, 22:32
  2. HTML to VARIABLE
    Por Danilo51 en el foro PROGRAMACION WEB
    Respuestas: 11
    Último mensaje: 04-09-2008, 11:21
  3. como hack3o si tienes ip variable?
    Por drmaloy en el foro GENERAL
    Respuestas: 2
    Último mensaje: 26-09-2006, 11:05
  4. Bash en WIN
    Por welvis30 en el foro WINDOWS
    Respuestas: 3
    Último mensaje: 11-08-2006, 11:54
  5. asignar la hora del sistema a una variable en C++
    Por spushan en el foro PROGRAMACION DESKTOP
    Respuestas: 5
    Último mensaje: 03-06-2003, 21:06

Marcadores

Marcadores