Chinaunix

标题: 开贴发问:ftp脚本里面可以使用if判断语句么? [打印本页]

作者: Steiny    时间: 2009-05-06 15:34
标题: 开贴发问:ftp脚本里面可以使用if判断语句么?
  1. login_name="123456"
  2. password="123456"
  3. dir1=/E/images/
  4. dir2=/BKFILE/IMAGE/
  5. ftp -v -n  $hostname << EOF
  6. user $login_name $password
  7. mkdir /E/images/${datadir}
  8. binary
  9. cd $dir1
  10. lcd $dir2
  11. prompt
  12. mput $filename
  13. bye
  14. EOF
复制代码


中间如果/E/images/${datadir}存在,就会提示:文件已存在。

如何加入判断语句呢?我尝试加入if语句,结果是,命令无法识别...
作者: 我是DBA    时间: 2009-05-06 15:44
标题: 回复 #1 Steiny 的帖子
ftp里没有判断语句吧
作者: Steiny    时间: 2009-05-06 15:55


有什么办法在ftp脚本中判断目录是否存在呢?
作者: ztj2247    时间: 2009-05-06 16:02
cd $dir || echo nodir >> /ftp.log
作者: waker    时间: 2009-05-06 16:03
可以使用expect之类的现成工具
也可以建立两个fifo,通过一个用shell来判断,再把结果用另一个反馈给ftp
作者: Steiny    时间: 2009-05-06 17:08
回4楼:
#cd 111 || echo nodir >> ftp.log
-bash: cd: 111: No such file or directory


#more ftp.log
nodir

不行的吧?
作者: Steiny    时间: 2009-05-06 17:09
标题: 回复 #5 waker 的帖子
这个,听起来很高深哎,能详细解释一下么,谢谢啊!
作者: waker    时间: 2009-05-06 17:19
标题: 回复 #7 Steiny 的帖子
化高深为低浅的方法之一就是:
看看新手导航或基础12篇
作者: 我是DBA    时间: 2009-05-06 17:22
标题: 回复 #7 Steiny 的帖子
版版的意思大致如下:
先用一个ftp写日志
然后通过脚本判断日志内容
进行第二次ftp传输
作者: Steiny    时间: 2009-05-07 11:40
标题: 回复 #8 waker 的帖子
呵呵

当然在看了
作者: Steiny    时间: 2009-05-07 11:43
原帖由 我是DBA 于 2009-5-6 17:22 发表
版版的意思大致如下:
先用一个ftp写日志
然后通过脚本判断日志内容
进行第二次ftp传输



我知道大概思路了
先进行一次ftp,导出目录信息,然后if语句判断,不存在就执行带mkdir的ftp脚本,存在就执行不带mkdir的脚本?

这样,能实现效果,不过脚本显的繁琐了点哦
作者: wrl    时间: 2009-05-09 00:49
本回复分两部分,第一部分是在两台Linux之间建立互信的过程,之后从客户机登录服务器不需要再键入密码.两台机器分别为:
服务器: RHEL5, 192.168.1.8, 用户为db2inst1
客户端: Fedora5, 192.168.1.10, 用户为wrl

第一部分完全为客户端Fedora5上的操作,拷屏如下,
$cd
$ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/wrl/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/wrl/.ssh/id_rsa.
Your public key has been saved in /home/wrl/.ssh/id_rsa.pub.
The key fingerprint is:
76:f8:39:0c:50:30:1c:2d:c3:8a:3a:68:74:39:5f:85 wrl@Venus
$ssh -l db2inst1 192.168.1.8 mkdir .ssh; chmod 0700 .ssh  
db2inst1@192.168.1.8's password:
$scp .ssh/id_rsa.pub db2inst1@192.168.1.8:.ssh/id_rsa.pub
db2inst1@192.168.1.8's password:
id_rsa.pub                                    100%  391     0.4KB/s   00:00   
$ssh -l db2inst1 192.168.1.8 touch .ssh/authorized_keys2; cat .ssh/id_rsa.pub >>.ssh/authorized_keys2
db2inst1@192.168.1.8's password:
$ssh -l db2inst1 192.168.1.8
Last login: Sat May  9 00:34:17 2009 from 192.168.1.10
$ /home/db2inst1>exit
$



第二部分建立一个名为rssh.sh的脚本文件并执行,结果如下,
$rssh.sh
192.168.1.8 has /tmp directory
192.168.8.8 doesn't have /tmpnotexist directory
$

rssh.sh的代码如下,
#!/bin/ksh

ssh -l db2inst1 192.168.1.8 [[ -d /tmp ]]
if [ $? -eq 0 ]; then
        echo "192.168.1.8 has /tmp directory"
else
        echo "192.168.8.8 doesn't have /tmp directory"
fi

ssh -l db2inst1 192.168.1.8 [[ -d /tmpnotexist ]]
if [ $? -eq 0 ]; then
        echo "192.168.1.8 has /tmpnotexist directory"
else
        echo "192.168.8.8 doesn't have /tmpnotexist directory"
fi

作者: Steiny    时间: 2009-05-30 16:31
不是太理解,学习中
作者: linuxleio    时间: 2009-05-30 17:48
Steiny ,你的ftp 脚本是不是很有趣?能不能copy一份我看看呢?我想多学习下shell script
E-mail:linuxleio@gmail.com
谢谢~!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2