Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: puchi en 27 Diciembre 2016, 18:35 pm



Título: comando read
Publicado por: puchi en 27 Diciembre 2016, 18:35 pm
Hola,

Me gustaría saber si hay alguna forma de llenar el campo read de un script utilizando otro.
Por ejemplo este script que no es posible modificar , al ejecutarse me pide que introduzca el valor:
 
Código:
   read -p "Introduce un Valor: " variable
   echo "$variable"
 
Ahora lo que necesito saber si existe alguna forma para que ese valor lo introduzca otro script sin tocar el primer script.
Código:
   ?????
Gracias


Título: Re: comando read
Publicado por: warcry. en 28 Diciembre 2016, 15:04 pm
vamos a suponer que el script 1.sh es intocable

Código:
#!/bin/bash

echo -e "¿buenos dias que quieres parsear?
"

read parseo


echo -e "
ya ta ;)
"

echo -e $parseo

como puedes apreciar me hace una pregunta y contesto y me lo muestra en pantalla lo que he contestado

Código:
warcry Desktop # sh 1.sh
¿buenos dias que quieres parsear?

hola mundo

ya ta ;)

hola mundo
warcry Desktop #

bien esa seria mi salida "hola mundo" que es lo que necesito que lea mi segundo script que es 2.sh

para eso necesito apoyarme en un archivo de texto el 1.lst, al cual voy a mandar con el comando tee toda la información del script intocable.

Código:
warcry Desktop # sh 1.sh | tee 1.lst
¿buenos dias que quieres parsear?

hola mundo

ya ta ;)

hola mundo
warcry Desktop #


el script se ha ejecutado con normalidad, y a la vez me ha generado este archivo de texto:

Código:
¿buenos dias que quieres parsear?


ya ta ;)

hola mundo

ahora tengo que acoplar el segundo script el cual si puedo modificar para que al read le pase la información que necesito

como a mi me interesa la salida que sale en la ultima linea, la manera mas eficiente seria crear una variable en el segundo script y olvidarte del read

Código:
#!/bin/bash

suerte=$(tail -1 1.lst)

echo $suerte

que aun asi quieres seguir utilizando read, pues generas un archivo intermedio

Código:
#!/bin/bash

tail -1 1.lst > 2.lst

read suerte < 2.lst

echo $suerte

en cualquiera de los dos casos la salida es la misma

Código:
warcry Desktop # sh 2.sh
hola mundo






Título: Re: comando read
Publicado por: puchi en 28 Diciembre 2016, 19:04 pm
Creo que me explicado mal , lo siento.

EL tema es que yo quiero conectarme por ssh pero quiero que no me pide la contraseña
es decir en el mismo comando introducir la contraseña pero no creo que se pueda.
Por eso quería saber si hay alguna forma para que un script autoconteste a la petición de contraseña del  ssh.

o otro ejemplo es el unrar que al querer extraer un rar encryptado me pide pass y yo quiero ponerle la pass dentro del comando o crear un script que autoconteste a la petición.

No se si me he explicado  :-\

Gracias


Título: Re: comando read
Publicado por: warcry. en 28 Diciembre 2016, 19:08 pm
Código:
ssh -p 22 usuario:contraseña@192.168.0.168

no se que tiene de misterio

edito: y con respecto a unrar

Código:
NAME
     unrar - extract files from rar archives

SYNOPSIS
     unrar <command> [-<switch 1> -<switch N>] archive [files...] [path...]

DESCRIPTION
     This manual page documents briefly the unrar command.
     This manual page was written for the Debian GNU/Linux distribution
     because the original program does not have a manual page.
     Commands and options described here are as of unrar 2.02.

OPTIONS
     After the program name comes a command and then optional switches with 
     dashes before them. A summary of commands is included below. For a complete
     description, run unrar without options.

     e     Extract files to current directory.

     l     List archive content.

     p     Print file to stdout.

     t     Test archive files.

     v     Verbosely list archive.

     x     Extract files with full path.


SWITCHES
     NOTE: Every switch must be separated by a whitespace.
     You cannot put them together.

     -av-   Disable AV check.
     
     -c-    Disable comments show.

     -f     Freshen files.

     -kb    Keep broken extracted files.

     -ierr  Send all messages to stderr.

     -inul  Disable all messages.

     -o+    Overwrite existing files.

     -o-    Do not overwrite existing files.

     -p<password>     
            Set password.

     -p-    Do not query password.

     -r     Recurse subdirectories.

     -u     Update files.

     -v     List all volumes.

     -x<file>
            Exclude specified file.

     -x@<list>
            Exclude files in specified list file.

     -x@    Read file names to exclude from stdin.

     -y     Assume Yes on all queries.


SEE ALSO
    The program is documented fully in Rar.Txt which you find in /usr/doc/rar.
    Options described there are same for rar and unrar.

AUTHOR
     This manual page was written by Petr Cech <cech@debian.org> according
     to "unrar -h" for the Debian GNU/Linux system (but may be used by others).

tiene la opcion -p para introducir la contraseña directamente  :huh:


Título: Re: comando read
Publicado por: puchi en 28 Diciembre 2016, 19:16 pm
los he intentado las 2 cosas antes de postear y no me funcionaron me seguía pidiendo la pass en los 2 casos


Título: Re: comando read
Publicado por: warcry. en 28 Diciembre 2016, 20:23 pm
los he intentado las 2 cosas antes de postear y no me funcionaron me seguía pidiendo la pass en los 2 casos

hay que usar mas google  :¬¬

supongo que la conexión ssh la tendras cifrada por rsa y por eso te pide pass.

descargate el paquete sshpass y lo instalas

Código:
sshpass -p contraseña ssh usuario@192.168.0.1

edito la negociación previa de la key RSA la tienes que tener hecha y guardada el archivo /root/.ssh/known_hosts, esto se hace solo una vez y en la primera conexion, despues como queda guardada ya no hace falta

Código:
warcry ~ # ssh usuario@192.168.0.1
The authenticity of host '192.168.0.1 (192.168.0.1)' can't be established.
RSA key fingerprint is cc:a7:d4:94:3a:3b:aa:f2:ab:13:cd:e5:6a:fc:0a:9a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.1' (RSA) to the list of known hosts.
usuario@192.168.0.1's password:
 >

despues con el sshpass entraras directamente

Código:
warcry ~ # sshpass -p contraseña ssh usuario@192.168.0.1
>

para el unrar tan sencillo como esto

Código:
warcry ~ # unrar x -pcontraseña /root/Desktop/1.rar 

UNRAR 5.30 beta 6 freeware      Copyright (c) 1993-2015 Alexander Roshal


Extracting from /root/Desktop/1.rar

Extracting  1.lst                                                         OK
All OK
warcry ~ #

la única complicación puede venir si dejas un espacio en blanco entre el -p y la clave


Título: Re: comando read
Publicado por: puchi en 28 Diciembre 2016, 20:59 pm
Buala!   ;-)

no me esperaba que ese miserable espacio me causara este problema jajajaj -p

sobre el otro lo voy a probar ahora, estaba buscando yo tmb por google y encontra algo llamado empty-expect para automatizar scripts por bash y que hace funcionar cosas como estas XD