0

ホーム サーバーにファイルをアップロードする bash スクリプトを作成しました。これは、applescript を使用してフォルダー アクション スクリプトからアクティブ化されます。セットアップは、私のデスクトップのフォルダーが place_on_server と呼ばれることです。書き込みたいフォルダーとまったく同じ内部ファイル構造を持つはずです: /var/www/media/ 使用法は次のようになります:

  • ディレクトリなどが place_on_server に追加された場合: ./upload DIR など
  • if directory of directory: etc/movies ./upload DIR etc movies //など
  • ファイルをサーバー上に配置する場合: ./upload F file.txt
  • if file in file in place_on_server ./upload F etc file.txt //など

ディレクトリを作成するには、次のようなコマンドを実行する必要があります。

ssh root@192.168.1.1<<EOF
cd /var/www/media/wherever
mkdir newdirectory
EOF

ファイル配置の場合:

rsync -rsh='ssh -p22' file  root@192.168.1.1:/var/www/media/wherever

脚本:

#!/bin/bash
addr=$(ifconfig -a | ./test)
if ($# -le "1")
then
    exit
elif ($1 -eq "DIR")
then
    f1="ssh -b root@$addr<<EOF"
    list = "cd /var/www/media\n"
    if($# -eq "2")
    then
        list=list+"mkdir $2\nEOF\n"
    else
        num=2
        i=$(($num))
        while($num < $#)
        do
            i=$(($num))
            list=list+"mkdir $i\n"
            list=list+"cd $i\n"
            $num=$num+1
        done
    fi
    echo $list
elif ($1 -eq "F")
then
    #list = "cd /var/www/media\n"
    f2="rsync -rsh=\'ssh -p22\' "
    f3 = "root@$addr:/var/www/media"
    if($# -eq "2")
    then
        f2=f2+$2+" "+f3
    else
        num=3
        i=$(($num))
        while($num < $#)
        do
            i=$(($num))
            f2=f2+"/"+$i
            $num=$num+1
        done
        i=$(($num))
        f2=f2+$i+" "+$f3
    fi
    echo $f2
fi
exit

出力:

(prompt)$ ./upload2 F SO test.txt
./upload2: line 3: 3: command not found
./upload2: line 6: F: command not found
./upload2: line 25: F: command not found

ご覧のとおり、入力の処理に問題があります。私がbashをやったのは久しぶりです。そして、それは決して大規模なものではありませんでした。私の問題の解決策だけでなく、提案も探しています。前もって感謝します。

4

2 に答える 2