作者 主題: 一個自動ftp的shell script  (閱讀 7121 次)

0 會員 與 1 訪客 正在閱讀本文。

aweipan

  • 可愛的小學生
  • *
  • 文章數: 21
    • 檢視個人資料
一個自動ftp的shell script
« 於: 2002-08-12 15:38 »
各位大大
我想寫一個自動ftp下載的script
我對程序完全不懂
我一開始 用vi ftp.sh  的檔案
內容  ftp localhost     <--暫時測試用localhost
接下來  ftp連上去之後  我要如何 讓 這個script
自動替我打入 user  tester
                  passwd 111111
                  ls
                  cd test
                  mget  *.*        <---下載到local呢?!
這要如何寫呢?!  help


aweipan

  • 可愛的小學生
  • *
  • 文章數: 21
    • 檢視個人資料
一個自動ftp的shell script
« 回覆 #2 於: 2002-08-12 16:38 »
我照著作  作不出來  不知道有那打錯了  請指教!
我建一個.netrc
內容如下
machine 10.0.224.253 login test password "111111"   <--我有建test帳號和密碼 ,並在/home/test下放入dnssetup檔案
macdef init      <---照抄
get dnssetup   <--抓取dnssetup
bye           <--離線
          <--空一行
存檔離開
執行[root@NAT pan]# nohup ftp 10.0.224.250 &
[6] 2414
[root@NAT pan]# nohup: appending output to `nohup.out'  <--一直停在這
?           <--我就用ctrl+c  停止

[6]+  Stopped                 nohup ftp 10.0.224.250
自己產生nohup.out
我用cat看nohup.out這個檔

[root@NAT pan]# cat nohup.out
Connected to 10.0.224.250 (10.0.224.250).
220 NAT FTP server (Version wu-2.6.2-5) ready.
Connected to 10.0.224.250 (10.0.224.250).
220 NAT FTP server (Version wu-2.6.2-5) ready.
有什麼地方錯了嗎?!

szeto

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
auto_ftp_code
« 回覆 #3 於: 2002-08-13 14:48 »
#!/bin/sh
cd /
cd /tmp
ftp<<**
open 192.168.0.0
xxxx (login_name)
xxxxx(password)

mget xxxxx(file_name) or 所有O 字頭的file O*(O1,O2.....)
yes (downlaod[O1])
yes ...............[02]
yes ....................
bye
**

aweipan

  • 可愛的小學生
  • *
  • 文章數: 21
    • 檢視個人資料
一個自動ftp的shell script
« 回覆 #4 於: 2002-08-14 15:33 »
我測試過好像有問題
不知道我有沒有打錯~~
我的系統是 redhat 7.2的  
我的做法如下 :
我在tester帳號下建一個 ftp.sh    chmod a+x ftp.sh
要去抓pan帳號下的123.html這個檔案  
ip 10.0.65.225  (localhost)
username pan
passwd 111111
內容如下:
#!/bin/sh

ftp<<**
open 10.0.65.225
pan
111111

mget 123.html
yes
bye
**
執行 ./ftp.sh
[tester@localhost tester]$ ./ftp.sh
Password:Name (10.0.65.225:tester):   <----一直停在這不動,我就按下enter
Login incorrect.    (就出現這些訊息)
Login failed.
?Invalid command
Please login with USER and PASS.
Passive mode refused.
?Invalid command
 
請問szeto 我這樣做有沒有錯誤的地方  小弟真得太笨了 一直試不出來!!

湯包

  • 榮譽博士
  • 鑽研的研究生
  • *****
  • 文章數: 923
  • 性別: 男
    • 檢視個人資料
    • 湯包的部落格
一個自動ftp的shell script
« 回覆 #5 於: 2004-04-05 12:38 »
那試試用  .netrc 的設定檔方式哩
或者使用 -n 的參數
人必先置於死地而後生
科技來自人性
想像是科技之母

jade-rabbit

  • 鑽研的研究生
  • *****
  • 文章數: 833
  • 性別: 男
    • 檢視個人資料
一個自動ftp的shell script
« 回覆 #6 於: 2004-04-05 20:08 »
以前我還是學生用 DEC Ultrix or Alpha UNIX OS 時,只要
ftp 192.168.2.1<cmd.ftp
即可。cmd.ftp 裡頭放的是
代碼: [選擇]

userXXX
passXXX
dir
bye


不過在 Linux 上就要改個方式囉,我就給他實測了一下。

Redhat GNU/Linux 7.3 + CLE 1.0
ftp-0.17-13

底下為 ftptest.sh 內容 (chmod +x ftptest.sh)
代碼: [選擇]

#!/bin/sh
/usr/bin/ftp 192.168.2.1<<_CMD_
dir
bye
_CMD_

底下為 ~/.netrc 內容 (記得 chmod 600 ~/.netrc)
代碼: [選擇]

machine 192.168.2.1 login USERXXX password PASSXXX

--(中也者天下之大本也,和也者天下之達道也)--

Pail

  • 俺是博士!
  • *****
  • 文章數: 1040
  • 性別: 男
    • 檢視個人資料
一個自動ftp的shell script
« 回覆 #7 於: 2004-04-06 09:48 »
這以前就有貼過了...
偶再來貼一次....
perl 寫法..
#!/usr/bin/perl
open F, "|ftp -vn";
print F <<END;
open localhost
user xxxx xxxx-pwd
ls
END
close F;

Shell 寫法.
1. 準備一個  txt file.
open localhost
use xxxx xxxx-pwd
ls
2. ftp -vn < txt
Pail Luo.
Email: pail.luo@gmail.com

vincent119

  • 憂鬱的高中生
  • ***
  • 文章數: 137
    • 檢視個人資料
一個自動ftp的shell script
« 回覆 #8 於: 2004-04-08 10:21 »
試試看吧,這是我最近寫的shell的一部份可以用

!/bin/bash
#ftp setting
ftpurl=xxx.xxx.xxx.xxx
ftpid=xxxx
ftppwd=xxxxx
ftpmode=binary
   #get the file
   ftp -vin $ftpurl <<command
   user $ftpid $ftppwd $ftpid@ftpurl
   $ftpmode
   lcd $backupdir/$today/
   put $today"backup.tar"
   by
command