転送スクリプト

前(id:mzp:20060608)で言っていたスクリプト

まずは、環境をば。

  • 目的はFTPサーバーにファイルを転送する事
  • FTPサーバーは内部PCからしかアクセスできない
  • 内部PCにはSSHで接続できる

ほいで、やっていること。

  • 内部PCにSSHを使ってファイル転送
  • 内部PCからFTPでファイル転送
  • 内部PCに転送したファイルを消す
#!/usr/local/bin/zsh
emulate -R zsh
setopt localoptions
proxy_user=alice
proxy_host=ssh.example.com

ftp_user=bob
ftp_pass=pass
ftp_host=ftp.example.com

function ssh_cmd(){
    ssh -l $proxy_user $proxy_host $1
}
function make_tmp(){
    ssh_cmd "mkdir __upload__"
}
function remove_tmp(){
    ssh_cmd "/usr/bin/rm -rf __upload__"
}
function copy_to_proxy(){
    scp $* $proxy_user@$proxy_host:__upload__/
}
function copy_to_remote(){
    ssh_cmd "lftp -c \"open $ftp_host && user $ftp_user $ftp_pass && mkdir $1\""
    ssh_cmd "lftp -c \"open $ftp_host && user $ftp_user $ftp_pass && lcd __upload__ && cd $1 && mput * && bye\""
}

if (($ARGC < 2)); then
    echo "usage: $0 " 
    exit
fi

make_tmp
copy_to_proxy $argv[1,-2]
copy_to_remote $argv[-1]
remove_tmp