shell中ftp问题

原码:
#!/bin/sh
log_date=`date "+%y%m%d%H%M%S"`
echo "请输入服务器IP地址:"
read ipserver
echo "请输入用户名:"
read username
echo "请输入密码:"
read passwd
i=1
while [ i -eq 1 ]
do
sleep 10
if [ -f tnms-info.log.5 ]; then
rm tnms-info.log.5
else
echo ""
fi
ftp -n $ipServer <<EOF
user $username $passwd
bin
cd /home/test/appserver/bin
lcd /home/test/log
get tnms-info.log.5
delete tnms-info.log.5
bye
EOF
done
运行后结果如下:
请输入服务器IP地址:
192.168.1.58
请输入用户名:
test
请输入密码:
test

 

 

在shell 中, 我以函数的方式调用ftp -na << !  报以下错误
: syntax error at line 20 : `<' unmatched

代码如下:
ftpdown()
{
  ftp -nv <<!
  open $ftpdownip
  user $ftpdownuser $ftpdownpasswd
  bin
  prompt off
  lcd $localdir
  cd $remotedir
  mget *
  !
exit 0
}


while [ 1 ]
do
....
        read ans
        case $ans in
        0)
                clear
                exit
                ;;
        1)
             clear
             ftpdown
exit
;;
}

在Shell中按下面的写
        ftp -ni ${ftp_ip}<<!
        user $ftp_user $ftp_passwd
        bin
        cd $ftp_path
        mget $ftp_file
        bye
        !
是对的,可是在外面嵌while语句,就会报 syntax error at line 23 : `<' unmatched这样的错误,而将上面的代码注释掉,while中的语句执行也是对的。请问,这个问题如何解决?
其中line 23指是的  ftp -ni ${ftp_ip}<<!这行

答案:是作为和<<!对应的另外一个“!”,应该写到该行的最前面,在它前面不允许留有空格tab键之类的

#!/usr/bin/ksh
. /zhjs/.profile
SOURCE_ID=/work/temp1
DEST_ID=/carlist

Hip=134.88.1.199
Hport=21
Husr=****
Hpass=****

cd $DEST_ID
for filename in `ls -d zs*`

do

ftp -i -n $Hip $Hport <<FTPIN
user $Husr $Hpass
bin
prom
cd $SOURCE_ID
get $filename
bye
FTPIN
done

 

目前所写的脚本希望在ftp上传成功返回0,ftp上传失败返回1,但试了很多方法,比如$?,trap和管道等都不行,请各位xdjm赐教,谢谢!ftp上传代码如下(已调试成功):
echo send the file to ftp server...



ftp -n<<!
open $host
user $user $password
binary
prompt off
lcd $local_dir
cd $remote_dir
put aa.TXT



close



bye
!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值