2016-06-17 8 views
1

私はFTPセッションをファイルディスクリプタに関連付けたいと思っています。サイクルを含む。bashスクリプトでバックグラウンドlftpセッションを起動するには?

たとえば、次のようなものです。しかし、それをやり遂げることはできませんでした。名前の記述

ftpoutという - - 最後の答えと一時ファイル

#!/bin/bash 
#start of script 
exec {ftpdescriptor}<> >(lftp -u $ftpuser,$ftppass $ftpip/$ftptd) 

# code 

(echo "ls" 1>&"$ftpdecriptor")> myanswer 

# code 

echo "bye" 1>&"$ftpdecriptor" 
exec {ftpdescriptor}>&- 
exit 0 
# end of script 

それは動作しますが、答えは常に標準出力しようとしてます。..

答えて

0

は、問題にとても

# start of script 
ftpout=$(mktemp) 
$timetowaitftp 
exec {ftpin}> >(lftp -u $ftpuser,$ftppass $ftpip/$ftptd > $ftpout) 
printf >&$ftpin "set net:timeout 10\n" 
function ftpio { 
    :>$ftpout 
    printf >&$ftpin "$1\n" 
    i=0 
    while [ ! $2 ] && [ ! -s $ftpout ] && [ $i -lt 10 ]; do 
     # echo "waiting answer from ftp 1 sec.." 
     sleep 1; 
     let i=i+1 
    done 
} 

# code 

ftpio "cd /modx" "nowait" # no output of cd command. 
ftpio "ls" 
cat $ftpout 
sleep 15 
ftpio "pwd" 
cat $ftpout 
#ftpio "put /var/www/vhosts/modx/backups/20160121.113318.tar.gz" "nowait" # 12Gb 
#ftpio "put /var/www/vhosts/modx/backups/20150930.092338.tar.gz" "nowait" # 800mb 

# /code 

# end of script 
printf 1>&"$ftpin" "bye\n" 
exec {ftpin}>&- 
rm $ftpout 

ftpinを解決しますftpの

関連する問題