夕口技術錄

專業上的小常識,備而用之~

[Linux][find] – 用法

●找 /根目錄下的某 檔名
# find / -name ooxx

●找出檔案大於 1G 的檔案後,交由 rm -rf 處理後結束
# find / -size +1000M -exec rm -rf {} \;
-exec:-exec 一直到 \; 是關鍵字,代表 find 額外動作的開始 (-exec) 到結束 (\;) ,例上 rm -rf 就是額外動作
; :在 bash 環境下是有特殊意義的,因此利用反斜線來跳脫 \;。
{}:『由 find 找到的內容』,結果會被放置到 {} 位置中

●搜尋 /home 底下屬於 vbird 的檔案
# find /home -user siko

●搜尋系統中不屬於任何人的檔案
# find / -nouser

●找出 /var 目錄下,檔案類型為 Socket 的檔名有哪些?
# find /var -type s
搜尋檔案的類型為 TYPE 的,
類型主要有:一般正規檔案 (f), 裝置檔案 (b, c), 目錄 (d), 連結檔 (l), socket (s), FIFO (p) 等屬性。

[Ajax] – 實作範例

<head>
<script language="JavaScript" src="js/ajax_fun.js"></script>
<script language=’javascript’>

function search_ipowner(search_id)
{
http_request = getXHR();
http_request.open(‘GET’,’./?action=module&fun=<!–{$status.path.fun}–>&permit=search&ip=’+document.getElementById(“ip"+search_id).value,false); <- 同步處理
http_request.send(null);
info = http_request.responseText;
xmlDoc = getXDOM(info); <- 回傳值為 xml 格式接法

echo “
<data>
<name>".htmlspecialchars($record[“record"][“name"])."</name>
</data>
“;

if(info!="")
{
try{
document.getElementById(“name"+search_id).value = xmlDoc.getElementsByTagName(“name")[0].childNodes[0].nodeValue;
}
catch(e)
{
document.getElementById(“ipowner_chk").innerHTML = “<br />無任何對應資料!!!";
}
}//if
else document.getElementById(“ipowner_chk").innerHTML = “<br />無任何對應資料!!!";
} // function search_ipowner

function search_ifname(search_id,ifname_enc)
{
http_request = getXHR();
http_request.open(‘GET’,’./?action=module&fun=<!–{$status.path.fun}–>&permit=search&deviceid=’+document.getElementById(“deviceid"+search_id).value+’&sno=’+search_id+’&ifname_enc=’+ifname_enc,false);
http_request.send(null);
info = http_request.responseText; <- 回傳值為 Data 格式接法
if(info!="")
{
try{
document.getElementById(‘ifname_option’+search_id).innerHTML = info;
}
catch(e)
{
document.getElementById(“ifname_option"+search_id).innerHTML = “&nbsp;無任何對應資料!!!";
}
}
else document.getElementById(“ifname_option"+search_id).innerHTML = “&nbsp;無任何對應資料!!!";
} // function search_ifname
</head>

<body>
<input type="text" size="18″ name="ip<!–{$record[loop].sno}–>" id="ip<!–{$record[loop].sno}–>" value="<!–{$record[loop].ip}–>">&nbsp;<input type="button" value="查詢IP保管人" onclick="javascript: search_ipowner(<!–{$record[loop].sno}–>);"><span id="ipowner_chk"></span>

<select name="deviceid<!–{$record[loop].sno}–>" id="deviceid<!–{$record[loop].sno}–>" onclick="javascript: search_ifname(<!–{$record[loop].sno}–>,'<!–{$record[loop].ifname_enc}–>’);">
<option value=""></option>
<!–{section name=nd loop=$rt.network_device}–>
<option value="<!–{$rt.network_device[nd].id}–>"<!–{if $rt.network_device[nd].id == $record[loop].deviceid}–> selected<!–{/if}–>><!–{$rt.network_device[nd].name}–></option>
<!–{/section}–>
</select>
<span id="ifname_option<!–{$record[loop].sno}–>"></span>
<script language=’javascript’>search_ifname(<!–{$record[loop].sno}–>,'<!–{$record[loop].ifname_enc}–>’);</script>
</body>
閱讀全文

[eregi] – 不知算不算 php 的 bug

以下是在 pcname scan 程式中,
使用 nmblookup 碰到中文字時,
會出現被轉為奇怪字元的情形,
本會用 eregi 去判斷是否有此情況出現,
但…卻發現會出現以下情況 ???
也不知算不算 php 的 bug …
後來使用  stripos($pcname,"….") !== false 的方式來解決
if(eregi(“….“,"ACER3703″))
echo “in1″;
else
echo “out1″;
if(eregi(“..e“,"ACER3703″))
echo “in2″;
else
echo “out2″;
if(eregi(“__.","ACER3703″))
echo “in3″;
else
echo “out3″;
if(eregi(“..M","ACER3703″))
echo “in4″;
else
echo “out4″;
result : in1  in2 out3  out4

[Linux][pid] – 用 pid 反查是誰開啟的

問題:大部份都是用 ps 或 pidof 去查 程式 所執行的pid為何,但如要反向查詢呢?

# ps ax | grep snort
28180 ?        S      0:01 /usr/local/eqit/netsecure/bin/snortc -l /usr/local/eqit/netsecure/log

解答:

方式1 ->
# ps -p 28180
PID TTY          TIME CMD
28180 ?        00:00:01 snortc


方式2->
# ps ax | grep ‘^13241’
13241 pts/3    S      0:00 /usr/local/eqit/foundation/bin/sflowtool -p 6342 -t

閱讀全文

[dd] – 用 dd 做塞爆硬碟測試

測試硬碟滿載的方式,
常用一些東西來塞爆
或改用 dd 來達成

作用: 製造一個 file(filename: hugefile), 內容都塞 0, 塞到 470Mb 為止, 語法如下

dd if=/dev/zero of=/hugefile count=470M obs=4096

of: filename
count: 塞 470MB
obs: 每個 black 要 4096 bytes

dd if=/dev/zero of=/hugefile count=470m obs=4096

[Linux][zip] – 加解密 指命

檔案:
zip -e -p test.zip test.txt 

目錄:
zip -e -r -p aaa.zip /home/aaa/*

-r     将指定的目录下的所有子目录以及文件一起处理

解密:
unzip aaa.zip

[C] – malloc 函數

malloc()是C語言裡宣告動態記憶體的函式.
也就是說malloc()是C語言裡像電腦要/借記憶體的函式.
此函數有一個引數, 就是告訴電腦你要/借多少個記憶體.
比如說

malloc(sizeof(char))就是告訴電腦你要/借1個byte的記憶體
malloc(sizeof(int))就是告訴電腦你要/借4個byte的記憶體
malloc(sizeof(int) * 10)就是告訴電腦你要/借4*10=40個byte的記憶體

malloc()會回傳兩種答案.
1. NULL, 這表示電腦已經沒記憶體可以借給你了.
2. 不是NULL. 這表示電腦有記憶體可以借你. 回傳的是電腦借給你的記憶體的住址.

因malloc()不知你要如何用借來的記憶體, 所以malloc()的回傳型態是void *.
一個void的指標. 所以當你呼叫malloc()時要把malloc()回傳值改為你要的型態.

例:
//用malloc()像電腦借4*20=80個記憶體. 之後把這80個記憶體改成(int *).
//所以換句話說是像電腦借一個有20個int的陣列.
int *a;
a = (int *) malloc(sizeof(int) * 20);

//用malloc()像電腦借1*11=11個記憶體. 之後把這11個記憶體改成(char *).
//所以換句話說是像電腦借一個有11個char的陣列. 有11個字元的字串
char *a;
a = (int *) malloc(sizeof(char) * 11);

[C] – malloc 函數

[Linux][SSH] – 登錄慢(卡很久)問題

# vi /etc/ssh/sshd_config
UseDNS no
GSSAPIAuthentication no

有時會在某主機發現 ssh 登錄系統慢

原因在於 ssh-server端設置了UseDNS yes GSSAPIAuthentication yes (認證),當DNS(/etc/resolv.conf)有問題時,導致登錄過程緩慢。

[jpgraph] – 中文字型及預設路徑

中文字型設定位置
#vi jpg-config.inc
DEFINE(‘CHINESE_TTF_FONT’,’bkai00mp.ttf’);

預設路徑
# vi jpgraph.php
DEFINE(‘TTF_DIR’,’/usr/share/fonts/zh_TW/TrueType/’);

[Linux][pcap.h] – error: pcap.h: No such file or directory

在 rebuild 套件時遇到這個錯誤
error: pcap.h: No such file or directory

解決方式
#yum -y install libpcap-devel //安裝 libpcap-devel 套件 (/usr/include/pcap.h)
#rpm -ql libpcap-devel //列出此套件安裝了哪些檔案
/usr/include/pcap-bpf.h
/usr/include/pcap-namedb.h
/usr/include/pcap.h
/usr/lib/libpcap.a
/usr/lib/libpcap.so