2009年4月16日 星期四

如何使用shell撰寫ftp自動傳輸

在 Unix 中若要進行定時備份,通常都會將資料直接tar起來然後再進行壓縮再將其丟到另一台Server或是磁帶中去存放,而傳送到另外一台機器除了使用remote copy外還可以使用ftp來當作傳輸介面,下面來分享一下我所知道的三種透過shell達成ftp傳送的功能

方法一 : 使用腳本

TMP為暫存腳本

#!/bin/sh  
ftp -i -n 主機名 <<TMP
user $ID $PWD
bin
put $L_PATH $R_PATH
quit
TMP

方法二 : 使用外部檔案當作腳本

$file 為指令檔案

#!/bin/sh
echo "open 1x.xx.xx.x0"> $file
echo "user $loginName $password">>$file
echo "bin">>$file
echo "hash">>$file
echo "cd /usr/database">>$file
echo "put data$filename">>$file
echo "close">>$file
echo "bye">>4file
#自動執行FTP
cat $file | ftp -n

方法三 : 使用 ".netrc" 來設定ftp連線

  a. 請於家目錄下方新增一張檔案.netrc內容如下

     machine 192.168.1.15 login ftp1 password 123

  b.將檔案權限設定為 600 

     -rw------- 1 yichen root    45  3月 29 10:35 .netrc

  c.在此使用者身分下連線到192.168.1.15時會自動使用ftp1/123登入ftp

    所以shell中可使用 ! 進行ftp session 跟 shell session進行切換

#!/bin/sh

ftp 192.168.1.15 <<!

cd xxx

put xxx

lcd xxxx

!

2009年4月5日 星期日

Linux 如何使用命令行編輯 ( Command-line Edition )

在使用AIX的ksh進行操作的時候總是覺得能在命令列使用vi的操作模式來進行指令的行內(in-line)編輯以及歷史指令的搜尋是一種令人很愉快的事情,當然這,這個功能就叫做命令行編輯 (Command-line Edition )

若要使用這個功能可執行「set –o vi」來達成。

不過最好的方法當然是寫入設定檔囉,以CentOS的bash為例

主要設定檔為 /etc/bashrc 提供root進行所有帳號的範本設定

每個User的家目錄下面也會有一張 .bashrc 的檔案提供User進行設定

我們可以將開啟命令行編輯的指令寫在其中一個檔案裡面,這樣每次登入就都會開啟功能了。

操作方式

如同vi一樣,分為兩種模式,操作方式與vi同

Input 模式

    直接輸入指令

Command 模式 ( ESC可進入 )

    命令完全與vi相同,前後指令切換與搜尋依據為shell history檔,

    Ex. $HOME/.bash_history

 

ps. 上面的set –o vi 也可以是 set –o emacs