Lo scripting Bash è un potente strumento per automatizzare compiti e testare connessioni a diversi servizi, inclusi quelli basati su FTP (File Transfer Protocol). In questo articolo, esploreremo come creare uno script Bash per testare la connessione FTP verso un host specifico.
Prima di iniziare, assicuriamoci di avere installato il client FTP sul sistema. Su sistemi basati su Debian o Ubuntu, possiamo farlo con il seguente comando:
sudo apt-get install ftp
Su sistemi basati su Red Hat o CentOS, possiamo usare:
# Oppure usando dnf
sudo yum install ftp
Creiamo uno script Bash chiamato test_ftp_connection.sh
che ci permetterà di testare la connessione FTP. Utilizziamo un editor di testo come nano
o vim
per creare il file:
nano test_ftp_connection.sh
Ora, inseriamo il seguente codice nello script:
#!/bin/bash
# Dichiarazione delle variabili
HOST="192.168.1.8"
USERNAME="user"
PASSWORD="password"
TEST_FILE="test_file.txt"
if [ ! -f $TEST_FILE ]; then
echo "Creazione del file di test..."
echo "Questo è un file di test." > $TEST_FILE
echo "File di test creato con successo."
else
echo "Il file di test esiste già."
fi
check_ftp_client() {
# Controllo della presenza del client FTP
if [ -x "$(command -v ftp)" ]; then
echo "Client FTP trovato."
else
echo "Client FTP non trovato. Installare il client FTP per eseguire il test."
exit 1
fi
}
# Chiamata alla funzione di controllo del client FTP
check_ftp_client
# Funzione per testare la connessione FTP
test_ftp_connection() {
# Connessione FTP e controllo dello stato
ftp -n $HOST <<END_SCRIPT
quote USER $USERNAME
quote PASS $PASSWORD
quit
END_SCRIPT
# Controllo dello stato di uscita del comando ftp
if [ $? -eq 0 ]; then
echo "Connessione FTP riuscita!"
# Creazione di un file di test remoto
echo "Questo è un file di test." | ftp -n $HOST <<END_SCRIPT
quote USER $USERNAME
quote PASS $PASSWORD
put $TEST_FILE
quit
END_SCRIPT
echo "File di test creato con successo."
else
echo "Connessione FTP fallita. Controllare le credenziali e la disponibilità del servizio."
fi
echo "Eliminazione del file di test remoto..."
# Eliminazione del file di test remoto
ftp -n $HOST <<END_SCRIPT
quote USER $USERNAME
quote PASS $PASSWORD
delete $TEST_FILE
quit
END_SCRIPT
echo "File di test remoto eliminato con successo."
# Eliminazione del file di test locale
echo "Eliminazione del file di test locale..."
rm $TEST_FILE
echo "File di test locale eliminato con successo."
exit 0
}
# Chiamata alla funzione di test della connessione FTP
test_ftp_connection
Lo script proverà ad uploadare un file locale sul server FTP remoto verificando l'esito dell'operazione. La prima verifica riguarda il file locale che, se non esiste, verrà creato. Quindi si passa a verificare l'installazione locale del client FTP. Se non esiste un client FTP locale, lo script terminerà la sua esecuzione. Quindi viene creata una sessione FTP col server remoto e viene caricato il file di test che, una volta ultimata la verifica, verrà rimosso sia dal server remoto che in locale. La sessione FTP prevede l'uso di comandi FTP come put e delete.
Prima di eseguire lo script, è necessario renderlo eseguibile con il seguente comando:
chmod +x test_ftp_connection.sh
Ora possiamo eseguire lo scripti:
./test_ftp_connection.sh
Assicuriamoci di personalizzare le variabili nell'intestazione dello script con le informazioni corrette relative all'host FTP, nome utente e password.