2016-11-08 2 views
0

"/Volumes/MEDIA/SERVER/SYNC.sh"を使用してターミナルで実行するとうまく動作する.shスクリプトを持っています しかし、私はそれを得ることができませんAppleScriptエディタで次のコマンドを実行してください: do shell script "/VOLumes/MEDIA/SERVER/SYNC.sh" また、上記のbashを前面に表示してください。AppleScriptはターミナルにあるようにシェルスクリプトを実行しません

シェルスクリプト(SYNC.sh)しないことにより

#!/bin/bash 
login="uhh" 
pass="uhh" 
host="uhh.com" 
remote_dir='~/private/sync' 
local_dir="/Volumes/MEDIA/_/SYNCING" 

base_name="$(basename "$0")" 
lock_file="/tmp/$base_name.lock" 
trap "rm -f $lock_file" SIGINT SIGTERM 
if [ -e "$lock_file" ] 
then 
    echo "$base_name is running already." 
    exit 
else 
    touch "$lock_file" 
    lftp -p 22 -u "$login","$pass" sftp://"$host" << EOF 
    set sftp:auto-confirm yes 
    set mirror:use-pget-n 5 
    mirror -c -P5 --Remove-source-files --log="/Volumes/MEDIA/SERVER/LOGS/$base_name.log" "$remote_dir" "$local_dir" 
    quit 
EOF 
    # MOVE FINISHED FILES INTO DIRECTORY FOR CONVERSION 
    mv /Volumes/MEDIA/_/SYNCING/movies/* /Volumes/MEDIA/SEEDBOX/MOVIES 
    mv /Volumes/MEDIA/_/SYNCING/tvshows/* /Volumes/MEDIA/SEEDBOX/TVSHOWS 
    mv /Volumes/MEDIA/_/SYNCING/books/* /Volumes/MEDIA/SEEDBOX/BOOKS 
    mv /Volumes/MEDIA/_/SYNCING/music/* /Volumes/MEDIA/SEEDBOX/MOVIES 

    # SHOW COMPLETED NOTIFICIATION 
    osascript -e 'display notification "Sync completed" with title "SEEDB0X"' 

    rm -f "$lock_file" 
    trap - SIGINT SIGTERM 
    exit 
fi 

'は同一では' 何が起こるかだけ

osascript -e 'display notification "Sync completed" with title "SEEDB0X"' 

が実行されています。ターミナル経由で実行されるスクリプトでは、同期が完了した後にのみ表示されます。

ありがとうございました!

+0

本当にあなたのユーザ名、パスワード、ホストはすべて、そのスクリプトの冒頭にプレーンテキストで書かれていますか? :-) –

+0

'mv'行が実行されていないことをどのように知っていますか?または 'rm'行など? –

+0

まあ、それは私の超愚かだった。 - 私はlftpによる同期ではありません。それをターミナルで実行すると、すぐに新しいファイルがすべて取得されます。 – Kitsune

答えて

0

自分でlftpをインストールしましたか? Mac OS Xにデフォルトでインストールされているかどうかをチェックするのに便利なMacはありません。インストールした場合は、AppleScript環境のPATHにない可能性があり、そこから実行するとbashスクリプトはそれを見つけることができません。

このような場合、あなたはどちらかにあります:

  1. は完全に 'lftpの'(例えば、 "は/ usr/local/binに/ lftpの" またはどここれまで実際にそれへのパスを修飾AppleScript(またはbashスクリプトの早い段階)で使用されているPATH環境変数に追加してください。

私はオプション1に行くと思います。オプション2は過度のもので、他の時には他のものに悪影響を及ぼす可能性が高くなります。

PS。 'lftp'がインストールされている場所が分からない場合は、端末に 'which lftp'と入力します。

+0

私は自分でLFTPをインストールする必要がありました。あなたの考えは理にかなっています。だから私はlftpをフルパスに置き換え、それが私の問題を解決しました、ありがとう! – Kitsune

+0

私はあなたのコメントを投票する担当者を持っていない、十分な担当者を持っていれば、私はあなたのためにその上向きの矢印を打つでしょう。 – Kitsune

+0

心配する必要はありません...うまくいきます –

関連する問題