搜尋此網誌

星期三, 9月 15, 2010

在dos下,如何使用無窮迴圈來作一個監控程式

在dos下,如何使用無窮迴圈來作一個監控程式

對一個dba來說,在dos 下想使用跟unix相同的工具來監控系統,會是一個很大的困擾。

今天在客戶端,為了進行tnsping的監控,user使用了tnsping {tnsname} 20

這是一個偵測資料庫是否可以連接的指令

不過,在dos下必須一直手動執行,才能繼續監控。

這對我來說是一個很不舒服的感覺。

因此我在網路上找到以下的指令:


for /l %%i in (1 1 50000) do (ping 168.95.1.1 -n 1)


其中的ping 為你想執行的系統指令,1 1 5000,代表,每由1開始,間隔1次執行,共執行至50000時停止。

不過真的執行下去,就馬上一直執行。這個結果還不能滿足我的需求,我還要他中間有暫停時間,暫停完後才再度執行指令。
---20100926補充:dos下有timeout指令,可以代替sleep來使用
可以改寫為:


for /l %i in (1 1 50000) do (
ping 168.95.1.1 -n 1 >>d:\test.log
timeout 2
)


---
然而dos下沒有sleep的指令,因此我把想法轉移到perl上面

對一個oracle dba來說,perl是你最好的朋友,只需要環境變數上,加上小小的路徑,你就可以瞬間提升功力。

這段perl的語法如下:


$num = 1;
while($num++){

print "$num\n";
system("ping 168.95.1.1 -n 1");
    sleep(2);
}

注意,這是一個無窮迴圈,若要限制次數,請修改num值,並將++改為--即可。

星期五, 9月 10, 2010

利用Wget 來抓整個網站

wget 是一個相當好的下載軟體,不過由於是命令模式介面,相較一般程式比較不易讓人接受。

基本的使用方法: wget url
例如:wget http://linuxreviews.org/
有關wget 使用手冊還是要靠各位自行去研讀。在網路漫遊的工具上,建議看看這二個手冊 wget (manual page) + less (manual page)。
wget 之所以強大,是在於你能對下載的網站,不斷的深入挖掘,這代表著你能挖光所有的頁面與所有的圖片。
例如: wget -r http://linuxreviews.org/

不過有的網站並不讓你下載全部的內容。這此網站是利用檢查你的流覽器( IE, FireFox,...) 版本。若他發現你不是用網頁流覽器來下載的話,會出現以下的錯誤訊息:
Sorry, but the download manager you are using to view this site is not supported. We do not support use of such download managers as flashget, go!zilla, or getright
--我們不支援下載管理器,如flashget, getright等--

Wget 可以非常方便的利用 -U 參數來對應這些網站. 使用 -U My-browser 來回應適當的版本資訊:




  wget  -r -p -U Mozilla http://www.stupidsite.com/restricedplace.html


其它重要的選項還有: --limit-rate= and --wait=. 你可以加入 --wait=20 來指定每個下載間的暫停時間(20秒), 這可以防止你被列入黑名單中而無法下載。加入 --limit-rate 預設值為 bytes, 加上 K 則為 KB/s. 
例如:
wget --wait=20 --limit-rate=20K -r -p -U Mozilla http://www.stupidsite.com/restricedplace.html
假如你只是簡單的這麼執行 wget http://foo.bar 指令, 網站管理者或許會覺得很沮喪。 而且如果你有限制下載的速度與下載的間隔時間,管理者更將不會查覺。

使用 --no-parent
--no-parent 是一個很方便的選項,這會讓wget 不會下載指定目錄外的其它檔案。