• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            自動FTP的小腳本

            Posted on 2009-04-10 13:55 Prayer 閱讀(446) 評論(0)  編輯 收藏 引用 所屬分類: Shell
                使用以下腳本,可以實(shí)現(xiàn)自動FTP,將你需要的文件傳送到需要的地方,或者將需要的文件從某個地方抓取下來。

            cd /PATH_YOU_WANT_TO_UPLOAD(DOWNLOAD)

            ftp -n <<- EOF

            open IP_ADDRESS

            user USERNAME PASSWORD

            ascii(or bin)

            put *(or get)

            bye

            EOF

             
                下面詳細(xì)講解以下這段代碼:
                1. cd /PATH_YOU_WANT_TO_UPLOAD(DOWNLOAD)
                    首先將進(jìn)入你要上傳得文件所存在的目錄,或者是想將某個FTP上的文件下載到的目錄。這樣就免去了在真正進(jìn)入FTP站點(diǎn)以后,還需要修改本地路徑的麻煩。
                2. ftp -n <<- EOF
                    由于是腳本,因此我們要給此FTP腳本定義一個結(jié)束的符號,在這里,定義的結(jié)束符是“EOF”。你也可以自己來定義其他的。不過建議用“EOF”,這在絕大多數(shù)編程語言中,都表示結(jié)束:End Of File。
                3. open IP_ADDRESS
                    表示連接FTP站點(diǎn),這里的IP_ADDRESS就是FTP站點(diǎn)的IP地址。
                4. user USERNAME PASSWORD
                    這是你進(jìn)入該FTP站點(diǎn)的用戶名和密碼。以上兩個結(jié)合起來,就相當(dāng)于我們通過瀏覽器進(jìn)入FTP站點(diǎn)時(shí)候,經(jīng)常使用的ftp://username:password@ip_address的辦法。
                5. ascii(or bin)
                    我們都知道FTP傳送有兩種方式:ascii和binary。這里就是指定你要傳送的方式。這很重要,因?yàn)檫@將決定你傳送或者獲取的文件是否正常可用。
                6. put *(or get)
                    put *表示將第一條cd進(jìn)入的路徑下所有的文件都傳送到剛剛連接進(jìn)入的FTP站點(diǎn)。當(dāng)然,你也可以指定某一個或者幾個文件,而不一定是所有的。而get則表明是將剛剛進(jìn)入的FTP站點(diǎn)那個FTP跟目錄下的文件獲取到本地——第一條cd命令進(jìn)入的那個路徑下。當(dāng)然,如果你所需要的文件不在FTP的根目錄下,在使用這個命令之前,你還要使用cd命令來修改一下FTP站點(diǎn)的當(dāng)前路徑。
                7. bye
                    完成應(yīng)該完成的工作以后,當(dāng)然就是斷開和FTP站點(diǎn)的連接了。
                8. EOF
                    這個符號之前已經(jīng)講過。當(dāng)腳本遇到這個符號的時(shí)候,它就知道應(yīng)該結(jié)束了。
             
                有個偷懶的辦法是,可以將以上的腳本寫成一個函數(shù),然后再需要的時(shí)候調(diào)用這個函數(shù)即可。

            autoftp()

            {

            cd

            ftp -n <<- EOF

            open IP_ADDRESS

            user USERNAME PASSWORD

            ascii (or bin:binary)

            put (or get)

            bye

            EOF

            }

             
                另外,還有一個需要注意的地方,就是在該段程序的后面,你需要去判斷自動FTP是否成功了——就是你傳送或者獲取是否成功了。這里的判斷也有兩個思路:
                1. 如果是獲取,則在本地判斷是否已經(jīng)成功獲取。如果是傳送,則需要再次調(diào)用自動FTP腳本,在FTP服務(wù)器正確的目錄去判斷是否傳送成功。不過這樣的辦法顯然是“笨重”的;
                2. 通過shell常用的方式:$?來判斷是否成功,如果返回值是0則表示成功,而返回值非0則表示沒有成功——但是,我所說的需要注意的地方,正是這里需要注意的。其實(shí)以上代碼,不管是否自動FTP是否成功,返回值其實(shí)都是0。這會讓很多人困擾,為什么呢?不要忘記了,其實(shí)你最后的代碼腳本是EOF,所以,不管你前面自動FTP傳送還是獲取都是失敗的,其實(shí)這個正常結(jié)束的符號讓這個腳本“正常結(jié)束”了,因此,$?的返回值就是0了。
                那么,這第二種簡單的辦法如何來判斷呢?——我也正在思考中。如果你想到了好的解決辦法,請給我來信,我的個人郵箱是:crystal.chen.cc@gmail.com
                非常感謝你認(rèn)真地閱讀。
            http://blog.chinaunix.net/u/12718/showart_249412.html
            欧美亚洲另类久久综合| 国产亚洲精久久久久久无码AV| 久久久久久免费视频| 亚洲国产精品成人久久| 日本精品久久久久中文字幕8| 色婷婷狠狠久久综合五月| 97精品依人久久久大香线蕉97| 久久99国产精品一区二区| 欧美久久一区二区三区| 国产精品久久久久影视不卡| 99久久香蕉国产线看观香| 国产精品久久久久久一区二区三区 | 国产精品免费看久久久香蕉| 一本一本久久aa综合精品| 久久狠狠一本精品综合网| 97久久精品无码一区二区| 精品久久久久成人码免费动漫| 亚洲狠狠综合久久| 久久久精品人妻一区二区三区蜜桃| 亚洲国产成人久久精品99 | 亚洲国产精品高清久久久| 久久福利片| 99久久精品国产一区二区| 99久久久精品| 久久精品人人做人人妻人人玩 | 久久久久久久波多野结衣高潮 | 久久精品国产精品亚洲毛片| 精品久久久久成人码免费动漫 | 国产午夜精品理论片久久影视| 国产免费久久精品99re丫y| 青草久久久国产线免观| 内射无码专区久久亚洲| 午夜福利91久久福利| 午夜精品久久久久久| 久久久这里只有精品加勒比| 无码人妻久久一区二区三区蜜桃 | 久久精品国产亚洲av麻豆图片| 青青青青久久精品国产h久久精品五福影院1421 | 99国产欧美精品久久久蜜芽| 91精品国产乱码久久久久久 | 久久精品国产亚洲欧美|