2008年9月15日

尋找Linux某一檔案內容的字串

find /home/user  -type f  -exec grep -l test {} \; 
-type f 只搜尋檔案(不然會find一堆目錄來比對) 
 
 

2008年5月15日

產生自動copy log的vb script

需求:自動move 5天前的log,避免主機硬碟滿
動作:move檔案,並紀錄move檔案的log

day3=date-5
year_value=right(datepart("yyyy",day3,1,1),2)
if datepart("m",day3,1,1)<10 then
month_value="0"&datepart("m",day3,1,1)
else
month_value=datepart("m",day3,1,1)
end if
select case month_value
case 1
mend=31
case 2
mend=28
case 3
mend=31
case 4
mend=30
case 5
mend=31
case 6
mend=30
case 7
mend=31
case 8
mend=31
case 9
mend=30
case 10
mend=31
case 11
mend=30
case 12
mend=31
end select

if datepart("d",day3,1,1)<10 then
day_value="0"&datepart("d",day3,1,1)
else
day_value=datepart("d",day3,1,1)
end if

'create batch file
Dim fso, log
Set fso = CreateObject("Scripting.FileSystemObject")
Set log = fso.openTextFile("d:\running\ct-ads2.bat",2,true)
log.WriteLine("echo *********************************** >>d:\log\hinet.log")
log.WriteLine("echo ct-act >>d:\log\hinet.log")
log.WriteLine("move \\192.168.24.34\ct-ads2-log\act\w3svc1\??"&year_value & month_value & day_value &".rar d:\log\ct-ads2-log\act >>d:\log\hinet.log")
log.WriteLine("move \\192.168.24.34\ct-ads2-log\act\w3svc1\??"&year_value & month_value & day_value &".rar d:\log\ct-ads2-log\act >>d:\log\hinet.log")
log.WriteLine("echo *********************************** >>d:\log\hinet.log")
log.Close


使用NTOP管理網路流量

管理頻寬使用量的常用工具
Openview
MRTG
sniffer,ethereal
Webtrend for Firewall
BandwidthD,Ntop
(以上我都有用,最常使用的是mrtg及ntop)

NTOP 的簡介
NTOP的發展原是為因對網路頻寬使用狀況的掌握,正如運用unix系統中的top指令以瞭解系統資源使用狀況一樣,可用圖形化的介面了解頻寬的使用情形.


NTOP 的運作原理
利用libpcap 的擷取封包功能將封包分析後存入資料庫,並將其結果輸出

NTOP的限制
只能用於區域網路內
無法跨SWITCH
硬體需求高,需要記憶體儲存擷取封包的資訊。

最近把google map及whois的功能新增進去,可反查ip的位置及owner。

2008年5月9日

最簡易的設定usb隨身碟成防止kavo病毒感染的方式

在隨身碟的根目錄下新增個資料夾,名稱是"autorun.inf",
避免kavo病毒寫入autorun.inf檔案。

2008年4月17日

限制公用無線AP進入公司

因開放二個無線AP在開放空間使用,
為方便使用所以無作安全設定,
我針對這個無線網路的network作限制,
讓這個network無法連到公司內部,
在core switch的設定如下...
interface vlan 12
ip access-group 110 in
access-list 110 deny ip 172.18.139.0 0.0.0.255 any log (限制無線網路的IP無法進入並記錄log)
access-list 110 permit ip any 192.168.0.0 0.0.255.255
access-list 110 permit icmp any 192.168.0.0 0.0.255.255

2008年3月26日

強制關閉公司員工的自動播放功能

 
gpedit.msc -> 群組原則 -> 電腦設定 -> 系統管理範本 -> 系統 -> 關閉自動播放
 
使用group policy套用到所有的pc,避免中Kavo的病毒。

2007年9月21日

用VB6.0編寫手機簡訊發送

用VB6.0編寫手機簡訊發送

因為手機簡訊的發送是以PDU串的形式發送出去的,中文字符以Unicode碼來表示,所以在發送中文簡訊之前必須首先將中文字符轉換為Unicode 碼,下面的函數將實現這個功能。這個函數主要應用到VB自帶的一個格式轉換函數:ChrW()將中文轉換為Unicode碼。 
PublicFunctionchg(rmsgAsString)AsString
  DimtepAsString
  DimtempAsString
  DimiAsInteger
  DimbAsInteger
  tep=rmsg
  i=Len(tep)
  b=i/4
  Ifi=b*4Then
  b=b-1
  tep=Left(tep,b*4)
  Else
  tep=Left(tep,b*4)
  EndIf
  chg=""
  Fori=1Tob
  temp="&H"&Mid(tep,(i-1)*4 1,4)
  chg=chg&ChrW(CInt(Val(temp)))
  Nexti
  EndFunction

  同上,為了發送以PDU模式發送簡訊,必須將手機號碼和對方手機號碼也轉換為PDU格式,下面的函數就是為了實現這種轉換: 

  PublicFunctiontelc(numAsString)AsString
  DimtlAsInteger
  Dimltem,rtem,ttemAsString
  DimtiAsInteger
  ttem=""
  tl=Len(num)
  Iftl<>11Andtl<>13Then
  MsgBox"wrongnumber."&tl
  ExitFunction
  EndIf
  Iftl=11Then
  tl=tl 2
  num="86"&num
  EndIf
  Forti=1TotlStep2
  ltem=Mid(num,ti,1)
  rtem=Mid(num,ti 1,1)
  Ifti=tlThenrtem="F"
  ttem=ttem&rtem<em
  Nextti
  telc=ttem
  EndFunction  

  手機號碼有兩種表示方法:11位和13位(帶國家碼86),一般手機發送時都是以13位形式表示的,所以以上的函數還有一個功能是自動將11位格式手機號碼轉換為13位形式,然後再轉換為PDU串。

  手機簡訊的發送主要借助於VB的Mscomm控件實現,關於Mscomm控件,前面的技術介紹部分有詳細介紹。簡訊的發送是由AT CMGS指令完成的,採用PDU模式發送,函數代碼如下:

  Constprex="0891"
  Constmidx="11000D91"
  Constsufx="000800"
  PublicFunctionSendsms(cscaAsString,numAsString,msgAsString)As_Boolean
  Dimpdu,psmsc,pnum,pmsgAsString
  DimlengAsString
  DimlengthAsInteger
  length=Len(msg)
  length=2*length
  leng=Hex(length)
  Iflength<16Thenleng="0"&leng
  psmsc=Trim(telc(csca))
  pnum=Trim(telc(num))
  pmsg=Trim(ascg(msg))
  pdu=prex&psmsc&midx&pnum&sufx&leng&pmsg
  sleep(1)
  mobcomm.Output="AT CMGF=0" vbCr
  mobcomm.Output="AT CMGS="&Str(15 length) vbCr
  mobcomm.Output=pdu&Chr$(26)
  sleep(1)
  Sendsms=True
  EndFunction  

  因為手機同一時間只能處理一件事情,因此這個函數只負責發送簡訊,關於簡訊發送成功與否以及閱讀簡訊的部分集中在一起處理。判斷手機簡訊發送成功與否主要由AT CMGS命令執行以後的返回碼來決定(可參見前文的AT指令介紹部分)。

  為了防止手機因過於繁忙而出錯,這裡採取了一定的方法讓手機有充分的時間處理發送和接收及刪除等操作。Sleep()函數正是為此而設計的,在發送及刪除操作後都會讓程序暫停一秒,這樣就不至於使得手機過於繁忙。

  Unicode碼解碼函數  

  相比於手機簡訊的發送而言,手機簡訊的接收主要的工作正好與之相反。手機簡訊的發送需要將待發送的簡訊內容轉換為Unicode碼,而簡訊的接收則需要將接收到的Unicode碼轉換成中文字符。下面的函數將實現解碼功能。同手機簡訊發送的編碼函數一樣,這裡也應用了一個VB內置的函數AscW()函數來將Unicode碼轉換為中文:

  PublicFunctionascg(smsgAsString)AsString
  Dimsi,sbAsInteger
  DimstmpAsInteger
  DimstempAsString
  sb=Len(smsg)
  ascg=""
  Forsi=1Tosb
  stmp=AscW(Mid(smsg,si,1))
  IfAbs(stmp)<127Then
  stemp="00"&Hex(stmp)
  Else
  stemp=Hex(stmp)
  EndIf
  ascg=ascg&stemp
  Nextsi
  ascg=Trim(ascg)
  EndFunction 

  2手機簡訊接收函數 

  相對於簡訊的發送函數而言,簡訊的接收相當簡單,只需要以下的三行代碼就完成了。但是它使用的技術卻決不比簡訊的發送少,這裡主要用到了Mscomm控件的Output屬性和AT CMGR指令。 

  PublicSubreadsms(rnumAsString)
  mobcomm.Output="AT CMGF=1" vbCr
  mobcomm.Output="AT CMGR="&rnum vbCr
  EndSub