comando read

Iniciado por puchi, 27 Diciembre 2016, 18:35 PM

0 Miembros y 1 Visitante están viendo este tema.

puchi

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:

   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.

   ?????

Gracias

warcry.

vamos a suponer que el script 1.sh es intocable

#!/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

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.

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:

¿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

#!/bin/bash

suerte=$(tail -1 1.lst)

echo $suerte


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

#!/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

warcry Desktop # sh 2.sh
hola mundo





HE SIDO BANEADO --- UN PLACER ---- SALUDOS

puchi

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

warcry.

#3
ssh -p 22 usuario:contraseña@192.168.0.168

no se que tiene de misterio

edito: y con respecto a unrar

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:
HE SIDO BANEADO --- UN PLACER ---- SALUDOS

puchi

los he intentado las 2 cosas antes de postear y no me funcionaron me seguía pidiendo la pass en los 2 casos

warcry.

#5
Cita de: 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

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

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

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

warcry ~ # sshpass -p contraseña ssh usuario@192.168.0.1
>


para el unrar tan sencillo como esto

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
HE SIDO BANEADO --- UN PLACER ---- SALUDOS

puchi

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