Creare uno script Bash per testare la connessione FTP

Creare uno script Bash per testare la connessione FTP

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.

Torna su