Pagina 1 di 1
[BASH] comandi interni a programma
Inviato: ven 25 set 2009, 22:08
da ulisse89
Premetto di non sapere quasi niente di bash scripting e che questa è solo una curiosità. Passo alla domanda.
Come faccio, all'interno di uno script, dopo aver eseguito un programma che accetta valori in input,a passarglieli?
Faccio un esempio che magari è più chiaro. Eseguo ftp nomeserver. Per fare il login automatico dove e come li scrivo username e password nello script?
E' probabile che sia una cavolata ma non trovo niente cercando su google anche perchè faccio fatica a trovare le parole giuste da cercare.
Re: [BASH] comandi interni a programma
Inviato: ven 25 set 2009, 22:24
da SIV
Se le dichiari come variabili? Tipo:
E poi le richiami all'interno dello script con:
Re: [BASH] comandi interni a programma
Inviato: ven 25 set 2009, 22:57
da ulisse89
Eh così non funziona, oppure, il problema è proprio come richiamarlo nello script.
Esempio:
Codice: Seleziona tutto
#!/bin/bash
USER=ulisse89
PASSWORD=aabbcc
ftp slacky.eu
$USER
$PASSWORD
Lo lancio e lui si ferma in attesa dello username.
Re: [BASH] comandi interni a programma
Inviato: ven 25 set 2009, 23:12
da Slack_Eater
Per risolvere i problemi di interattività all'interno degli script ti può essere utile expect, che risolve problemi come il tuo:
http://en.wikipedia.org/wiki/Expect
Trovi anche degli esempi su wikipedia per esempio per l'ftp:
Codice: Seleziona tutto
# Open an ftp session to a remote server, and wait for a username prompt.
spawn ftp $remote_server
expect "username:"
# Send the username, and then wait for a password prompt.
send "$my_user_id\r"
expect "password:"
# Send the password, and then wait for an ftp prompt.
send "$my_password\r"
expect "ftp>"
# Switch to binary mode, and then wait for an ftp prompt.
send "bin\r"
expect "ftp>"
# Turn off prompting.
send "prompt\r"
expect "ftp>"
# Get all the files
send "mget *\r"
expect "ftp>"
# Exit the ftp session, and wait for a special end-of-file character.
send "bye\r"
expect eof
Saluti
Re: [BASH] comandi interni a programma
Inviato: ven 25 set 2009, 23:28
da ulisse89
Expect proprio non lo conoscevo grazie. Funziona e realizza ciò che volevo. Pensavo però che ci fosse un qualcosa che potesse essere scritto in bash scripting.
Re: [BASH] comandi interni a programma
Inviato: sab 26 set 2009, 0:05
da cymon
Se il tuo cruccio è ftp quello che faccio di solito io è far produrre dallo script una lista comandi ftp che poi viene data in pasto a ftp tramite il comando -f.
Codice: Seleziona tutto
#FTP
cat > ftp.script << END
set ftp:ssl-allow false
open $FTP_SERVER
user $FTP_USER $FTP_PASSWORD
cd $FTP_DIRECTORY
put $FILE
END
echo "FTP commands..."
cat ftp.script
lftp -f ftp.script
rm ftp.script
Re: [BASH] comandi interni a programma
Inviato: sab 26 set 2009, 11:11
da ulisse89
cymon ha scritto:Se il tuo cruccio è ftp quello che faccio di solito io è far produrre dallo script una lista comandi ftp che poi viene data in pasto a ftp tramite il comando -f.
Codice: Seleziona tutto
#FTP
cat > ftp.script << END
set ftp:ssl-allow false
open $FTP_SERVER
user $FTP_USER $FTP_PASSWORD
cd $FTP_DIRECTORY
put $FILE
END
echo "FTP commands..."
cat ftp.script
lftp -f ftp.script
rm ftp.script
Intato grazie. Però questo va benissimo per ftp. Perchè il comando `user username password` ti permette di specificare insieme username e password.
Il mio cruccio non è ftp, ma in generale. Per esempio se dovessi fare un login automatico con ssh potrei fare:
In tal caso si blocca in attesa della password perchè non c'è un opzione che mi permette di passargli anche la password.