Inserimento utente in "Esegui script shell" di Automator

2

Ho un'azione cartella su una cartella / Volumes. Sto controllando quando un disco specifico è montato (cartella in / Volumi creati), controllando ssh al computer remoto. Se tutti i presenti eseguo rsync lì.

Era OK quando il numero di file era basso. Ora solo la "lista dei file di costruzione" di rsync impiega 40 minuti. Voglio questa azione chiedere prima di rsync per la mia decisione. Meglio con osascript.

source="/Volumes/MyDisk/FolderToSync"

user="username"
host="myhost"
port="22"
path="/RemoteFolder/"

log="$HOME/RSync_$(date +%Y.%m.%d_%H-%M-%S).log"
rm $HOME/RSync_$(date -v-1m +%Y.%m.)*.log

if [ -d "$source" ]; then

    nc -z $host $port > /dev/null   

    if [ $? -eq 0 ]; then
        touch $log;

        osascript -e 'display notification "Do you want to RSync now?" with title "ssh"'

        rsync -czvaEP --delete --log-file=$log "$source" -e "ssh -p$port" $user@$host:$path;

    fi
fi
    
posta Pavel 10.01.2018 - 22:20
fonte

1 risposta

0

L'utilizzo di display notification non sarà utile poiché il suo risultato è none, usa invece display dialog .

Il seguito è un esempio di come lo farei:

result="$(osascript -e '(display dialog "Do you want to Rsync now?" buttons {"No", "Yes"} default button 2 with title "ssh")')"
if [ "$result" == "button returned:Yes" ]; then
    rsync -czvaEP --delete --log-file=$log "$source" -e "ssh -p$port" $user@$host:$path;
fi

Mostrato nel codice pertinente pubblicato nell'OP:

source="/Volumes/MyDisk/FolderToSync"

user="username"
host="myhost"
port="22"
path="/RemoteFolder/"

log="$HOME/RSync_$(date +%Y.%m.%d_%H-%M-%S).log"
rm $HOME/RSync_$(date -v-1m +%Y.%m.)*.log

if [ -d "$source" ]; then

    nc -z $host $port > /dev/null   

    if [ $? -eq 0 ]; then
        touch $log;
        result="$(osascript -e '(display dialog "Do you want to Rsync now?" buttons {"No", "Yes"} default button 2 with title "ssh")')"
        if [ "$result" == "button returned:Yes" ]; then
            rsync -czvaEP --delete --log-file=$log "$source" -e "ssh -p$port" $user@$host:$path;
        fi
    fi
fi
    
risposta data 11.01.2018 - 01:38
fonte

Leggi altre domande sui tag