ホーム サーバーにファイルをアップロードする 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をやったのは久しぶりです。そして、それは決して大規模なものではありませんでした。私の問題の解決策だけでなく、提案も探しています。前もって感謝します。