Entrada del usuario en "Ejecutar Shell Script" de Automator

2

Tengo una Acción de carpeta en una carpeta / Volúmenes. Estoy comprobando cuándo se monta un disco específico (carpeta en / Volúmenes creados), revisando ssh en una computadora remota. Si todos los presentes corro rsync allí.

Estaba bien cuando el número de archivos era bajo. Ahora solo la "lista de archivos de construcción" de rsync toma 40 minutos. Quiero que esta acción pregunte antes de rsync por mi decisión. Mejor 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
    
pregunta Pavel 10.01.2018 - 22:20

1 respuesta

0

El uso de display notification no servirá de nada ya que su resultado es ninguno, usa un display dialog en su lugar.

El siguiente es un ejemplo de cómo lo haría:

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

Se muestra dentro del código relevante publicado en el 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
    
respondido por el user3439894 11.01.2018 - 01:38

Lea otras preguntas en las etiquetas