CEP's Blog -by Kage Park: Computer/package 카테고리 글 목록
http://kaget.cep.kr/blog/
2022-08-14T01:16:31+09:00
Textcube 1.10.7 : Tempo primo
snap/snapcraft test
Kage Park
http://kaget.cep.kr/blog/318
2022-08-02T07:12:25+09:00
2022-08-02T06:32:08+09:00
Universial Package Manager snap testing<br /><br />1. Install snap package<br /><strong>2. Install snapcraft (package builder)</strong><br />$ sudo snap install snapcraft --classic<br /><br /><strong>3. Simple Python script packaging</strong><br />$ mkdir ~/work<br /><span style="font-size: 15.008px;">- make a package(test-app) directory<br /></span>$ mkdir ~/work/test-app<br /><br /><strong>4. make a python script package</strong><br />$ mkdir ~/work/test-app/myapp<br />$ mkdir ~/work/test-app/myapp/lib<br />$ vi ~/work/test-app/myapp/lib/TM.py<br />------------------------------------------------------------<br />
<div>from datetime import datetime</div>
<div>def now():</div>
<div> return datetime.now().strftime('%s')</div>
<div>
<div style="font-size: 15.008px;">------------------------------------------------------------<br /><span style="font-size: 15.008px;">$ touch ~/work/test-app/myapp/lib/__init__.py<br /></span>$ vi ~/work/test-app/myapp/test_run<br /><span style="font-size: 15.008px;">------------------------------------------------------------</span><br />
<div>#!/usr/bin/env python3</div>
<div></div>
<div>from lib import TM</div>
<div></div>
<div></div>
<div>def main():</div>
<div></div>
<div> print('Hello, I am main()')</div>
<div> aa=TM.now()</div>
<div> input("now second is:{}".format(aa))</div>
<div></div>
<div>if __name__ == '__main__':</div>
<div> main()</div>
<span style="font-size: 15.008px;">------------------------------------------------------------<br /><br /></span><strong>5. make a snap configuration</strong><br />$ mkdir ~/work/test-app/snap<br />$ vi ~/work/test-app/snap/snapcraft.yaml<br /><span style="font-size: 15.008px;">------------------------------------------------------------</span><br />
<div>name: test-app # package name</div>
<div>version: '1.1' # package version</div>
<div>summary: Example python snap app</div>
<div>description: |</div>
<div> Example python snap app description</div>
<div>base: core20 # Common Base OS ( 18: ubuntu 18.04, 20: ubuntu 20.04, 22: ubuntu 22.04 )</div>
<div>grade: stable</div>
<div>confinement: devmode</div>
<div></div>
<div>apps:</div>
<div> test-app: #Package name</div>
<div> command: myapp/test_run #running command path and filename (/snap/bin/<package name> will running the command line path file)</div>
<div> ## If need special path for shell script</div>
<div> #command: sh $SNAP/opt/foo/bin/foo.sh</div>
<div></div>
<div>parts:</div>
<div> test-app:</div>
<div> source: . #my local directory is source</div>
<div> ## When copy a file(shell/python/built binary file) to somewhere</div>
<div> plugin: dump </div>
<div> organize:</div>
<div> src/myapp: . # start with "src/" and my files are in the src directory. (copy the myapp directory)</div>
<div> ## When use python setup.py to install application then use python plugin</div>
<div> #plugin: python</div>
<div> #python-version: python3</div>
</div>
<span style="font-size: 15.008px;">------------------------------------------------------------<br /><br /></span><strong>6. build </strong><br />$ cd ~/work/test-app<br />$ snapcraft<br /><br /><strong>7. Install</strong><br />$ snap install test-app_1.1_amd64.snap --devmode<br /><br /><strong>8. check </strong><br />
<div>
<div>
<div>
<div>
<div>
<div>$ snap list |grep test-app</div>
<div>test-app 1.1 x1 - - devmode</div>
</div>
</div>
</div>
</div>
</div>
<div></div>
<div>
<div>
<div>
<div>
<div>
<div>$ df -h</div>
<div>~~~<br />/dev/loop3 128K 128K 0 100% /snap/test-app/x1</div>
<div></div>
<div>$ ls -l /snap/bin/test-app </div>
<div>lrwxrwxrwx 1 root root 13 Aug 1 14:18 /snap/bin/test-app -> /usr/bin/snap</div>
</div>
</div>
</div>
</div>
</div>
<div>
<div></div>
</div>
<div>$ /snap/bin/test-app </div>
<div>Hello, I am main()</div>
<div>now second is:1659388777<br /><br /><strong>ETC & Tools)</strong><br />
<div>$ cat cleanup_multipath_snapcraft_built_garbage.sh <br />-------------------------------------------------------------------------------------------------------------</div>
<div>#!/bin/bash -x</div>
<div>## snapcraft-created multipass VMs</div>
<div>for vm in $(multipass list | awk '{print $1}' | grep "^snapcraft-"); do</div>
<div> multipass delete $vm --purge</div>
<div>done</div>
<div></div>
<div>## snapcraft-created LXD containers</div>
<div>#for c in $(lxc list | awk '{print $2}' | grep "^snapcraft-" | grep -v "snapcraft-dev"); do</div>
<div># lxc delete $c --force</div>
<div>#done</div>
<div><span style="font-size: 15.008px;">-------------------------------------------------------------------------------------------------------------<br /></span><br />
<div>$ cat remove_disabled_snap.sh </div>
<span style="font-size: 15.008px;">-------------------------------------------------------------------------------------------------------------</span><br />
<div>#!/bin/bash</div>
<div>set -eu</div>
<div></div>
<div>LANG=en_US.UTF-8 snap list --all | awk '/disabled/{print $1, $3}' |</div>
<div> while read snapname revision; do</div>
<div> snap remove "$snapname" --revision="$revision"</div>
<div> done</div>
<div style="font-size: 15.008px;"><span style="font-size: 15.008px;">-------------------------------------------------------------------------------------------------------------</span></div>
<br />Remove Package<br />$ snap remove <package name><br />other commands: https://www.cyberithub.com/36-popular-snap-command-examples-in-linux/<br /><br /><br />Few other snap configuration files example:<br /><strong>a) automatically use bin directory in local directory (Some updated code)</strong><br /> original : https://github.com/gocarlos/python-ubuntu-snap-app-example<br />
<div>
<div>$ ls </div>
<div>bin LICENSE myapp_module mygreatapp_1.0_amd64.snap README.md requirements.txt snap</div>
<div>
<div>$ cat requirements.txt </div>
<div>numpy</div>
</div>
<div>
<div>$ cat bin/my_great_app </div>
<div>#!/usr/bin/env python3</div>
<div></div>
<div>from myapp_module import my_great_app</div>
<div></div>
<div>"""</div>
<div> my application.</div>
<div>"""</div>
<div></div>
<div>def main():</div>
<div> """run the application"""</div>
<div></div>
<div> print('I\'m inside main')</div>
<div> my_great_app.tata()</div>
<div> input("Press enter to exit ;)")</div>
<div> input()</div>
<div></div>
<div></div>
<div>if __name__ == '__main__':</div>
<div> main()</div>
</div>
<div>
<div>$ ls myapp_module/</div>
<div>__init__.py my_great_app.py</div>
</div>
<div>
<div>$ cat myapp_module/my_great_app.py </div>
<div>#!/usr/bin/env python3</div>
<div></div>
<div>def tata():</div>
<div> print ('you could do great stuff inside this function.')</div>
<div> </div>
<div>def fun(x):</div>
<div> return x + 1</div>
</div>
<div>
<div>$ cat snap/snapcraft.yaml </div>
<div>name: mygreatapp</div>
<div>version: '1.0'</div>
<div>summary: Example python snap app</div>
<div>description: |</div>
<div> Example python snap app</div>
<div>base: core18</div>
<div>grade: stable</div>
<div>confinement: devmode</div>
<div></div>
<div>apps:</div>
<div> mygreatapp:</div>
<div> <em>command: my_great_app</em></div>
<div></div>
<div>parts:</div>
<div> mygreatapp:</div>
<div><em> plugin: python</em></div>
<div><em> python-version: python3</em></div>
<div> source: .</div>
</div>
<div><br /><strong>b) Automatically build and package from remote source file.</strong><br />
<div>$ cat snap/snapcraft.yaml </div>
<div>name: hello</div>
<div>base: core18</div>
<div>version: '2.10'</div>
<div>summary: GNU Hello, the "hello world" snap</div>
<div>description: |</div>
<div> GNU hello prints a friendly greeting.</div>
<div>grade: devel</div>
<div>confinement: devmode</div>
<div>parts:</div>
<div> gnu-hello:</div>
<div> source: http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz</div>
<div> plugin: autotools</div>
<div></div>
<div>
<div>
<div></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div><p><strong><a href="http://kaget.cep.kr/blog/318?commentInput=true#entry318WriteComment">댓글 쓰기</a></strong></p>
Simple IPMI Tool
Kage Park
http://kaget.cep.kr/blog/307
2020-06-18T04:24:42+09:00
2020-06-18T04:23:00+09:00
<br /><br />
<div>Simple IPMI Tool v1.0.43</div>
<div> - Check IPMI IP Address</div>
<div> - Send IPMI connand at multi thread</div>
<div>ipmi <cmd> [-T <thread num:20>] [-U <user:ADMIN>] [-P <password:ADMIN>] [-p <port:623>] -H <ip1,ip2,...></div>
<div></div>
<div></div>
<div>power <status,on,off,reset,cycle,shutdown> : Power handle</div>
<div>sdr : Show full SDR Info</div>
<div>sdr <record ID>: Show SDR <record ID>'s Info</div>
<div>sdr list : Show list</div>
<div>sel : Show SEL List</div>
<div>fru : Show FRU Info</div>
<div>raw <raw cmd> : Run <raw cmd></div>
<div>bmc info : Show BMC Info</div>
<div>bmc reset cold : BMC Cold reset</div>
<div>bmc reset warm : BMC Warm reset </div>
<div><br /><br />This will be fast send IPMI command to multi node.<br />But, it is very inital version.<br /><br /><br /><br /><div class="imageblock center"><a class="extensionIcon" href="http://kaget.cep.kr/blog/attachment/9258829612.xxx"><img src="http://kaget.cep.kr/blog/resources/image/extension/unknown.gif" alt="" /> ipmi</a></div><div></div></div><p><strong><a href="http://kaget.cep.kr/blog/307?commentInput=true#entry307WriteComment">댓글 쓰기</a></strong></p>
Temperature monitoring of BMC SDR Sensor
Kage Park
http://kaget.cep.kr/blog/305
2019-12-27T08:08:27+09:00
2019-12-27T08:05:55+09:00
<div>$ ./sdr_temp_mon </div>
<div>./sdr_temp_mon <bmc ip> [-b <bmc user> <bmc pass>] [-i <#|#m|#h>] [-l <log filename>] [-t <CPU,DIMM,...>] [-f <time format>]</div>
<div>-i : interval (default : 5seconds)</div>
<div> <#> : # seconds</div>
<div> <#m> : # min</div>
<div> <#h> : # hours</div>
<div>-b : BMC User & Password (default: ADMIN ADMIN)</div>
<div>-l : Logging the data to file, split data with "," symbol</div>
<div>-t : Temp monitoring items (default: CPU,DIMM) (ex: CPU,DIMM,System,...)</div>
<div>-f : Time Format (default: %H:%M:%S)</div>
<div></div>
<div><br /><br /></div>
<div>Monitor with System temperature and time display with date and seconds</div>
<div>$ ./sdr_temp_mon <BMC IP> -t CPU,DIMM,System -f "%m-%d %H:%M:%S"</div>
<div> time CPU System DIMMA1 DIMMB1 DIMMD1 DIMME1</div>
<div> 12-26 14:49:41 51 34 32 </div>
<div> 12-26 14:49:47 51 34 32 </div>
<div> 12-26 14:49:52 50 34 32 <br /><br /></div>
<div>Base monitor with display HH:MM each 2min.</div>
<div>$ ./sdr_temp_mon <BMC IP> -i 2m -f "%H:%M"</div>
<div> time CPU DIMMA1 DIMMB1 DIMMD1 DIMME1</div>
<div> 14:50 51 32 </div>
<div> 14:52 51 32 </div>
<div></div>
<div>If you want DIMM only at each 5seconds.</div>
<div>$ ./sdr_temp_mon <BMC IP> -t DIMM</div>
<div> time DIMMA1 DIMMB1 DIMMD1 DIMME1</div>
<div> 14:53:27 32 </div>
<div> 14:53:32 32 </div>
<div><br /><br />Check available monitoring items:<br />
<div># ipmitool -H <BMC IP> -U <User> -P <Password> sdr type Temperature</div>
<div><strong>CPU</strong> Temp | 01h | ok | 3.1 | 49 degrees C</div>
<div><strong>PCH</strong> Temp | 0Ah | ok | 7.1 | 54 degrees C</div>
<div><strong>System</strong> Temp | 0Bh | ok | 7.2 | 34 degrees C</div>
<div><strong>Peripheral</strong> Temp | 0Ch | ok | 7.3 | 35 degrees C</div>
<div><strong>MB_10G</strong> Temp | 0Dh | ok | 7.4 | 40 degrees C</div>
<div><strong>VRMCpu</strong> Temp | 10h | ok | 7.16 | 59 degrees C</div>
<div><strong>VRMAB</strong> Temp | 12h | ok | 7.18 | 38 degrees C</div>
<div><strong>VRMDE</strong> Temp | 13h | ok | 7.19 | 42 degrees C</div>
<div><strong>DIMMA1</strong> Temp | B0h | ok | 32.0 | 31 degrees C</div>
<div><strong>DIMMB1</strong> Temp | B2h | ns | 32.2 | No Reading</div>
<div><strong>DIMMD1</strong> Temp | B6h | ns | 32.6 | No Reading</div>
<div><strong>DIMME1</strong> Temp | B8h | ns | 32.8 | No Reading</div>
<div><strong>U2NVMeSSD1</strong> Temp | 4Bh | ns | 7.48 | No Reading</div>
<div><strong>U2NVMeSSD2</strong> Temp | 4Ch | ns | 7.49 | No Reading</div>
<div><br /><br />You can use "DIMMA1" or "DIMM" for memory monitoring<br />DIMM will monitor all Dimm, <br />DIMMA1 will monitor with DIMMA1 location only.<br /><br />You can check with above ipmitool command and can use bold string for the monitoring's "-t" option<br /><br /><br /><div class="imageblock center"><a class="extensionIcon" href="http://www.cep.kr/blog/attachment/4582255258.tgz"><img src="http://kaget.cep.kr/blog/resources/image/extension/unknown.gif" alt="" /> temp.tgz</a></div><div></div></div>
</div><p><strong><a href="http://kaget.cep.kr/blog/305?commentInput=true#entry305WriteComment">댓글 쓰기</a></strong></p>
ksort for enhanced sorting lines
Kage Park
http://kaget.cep.kr/blog/300
2019-12-27T08:23:13+09:00
2018-09-13T03:00:19+09:00
Enhanced sorting string lines.<br />It made by Python script.<br />Download it and change permission (chmod +x ./ksort)<br />and you can use it, if the system installed python.<br /><br /><br /><br />
<div>
<div>$ ./ksort --help</div>
<div>usage: ksort [-h] [-v] [-i ID] [-s SYMBOL] [-p PRINTID] [-n NEWLINE] [-r]</div>
<div> [-f FILE]</div>
<div> [otherthings [otherthings ...]]</div>
<div></div>
<div>ksort for sorting string lines or sorting string lines in file</div>
<div></div>
<div>positional arguments:</div>
<div> otherthings</div>
<div></div>
<div>optional arguments:</div>
<div> -h, --help show this help message and exit</div>
<div> -v, --version show program's version number and exit</div>
<div> -i ID, --field_id ID sorting filed id (start from 0), only one, it should</div>
<div> need -s option</div>
<div> -s SYMBOL, --field_symbol SYMBOL</div>
<div> field spliting symbol (space ex: space for all white</div>
<div> space, ' ' for only one space, it should need -i</div>
<div> option)</div>
<div> -p PRINTID, --print_field PRINTID</div>
<div> print field id(start from 0) (ex: 1,3,...), it should</div>
<div> need -i and -s option</div>
<div> -n NEWLINE, --newline NEWLINE</div>
<div> new line symbol (default: Linux (\n))</div>
<div> -r, --reverse reverse sort<br />
<div> -m, --num numerical sort</div>
</div>
<div> -f FILE, --file FILE Input text file</div>
<div></div>
<div>example)</div>
<div>sorting string:</div>
<div>./ksort "1</div>
<div>6</div>
<div>9</div>
<div>3</div>
<div>2</div>
<div>7"</div>
<div></div>
<div>reverse sorting string:</div>
<div>./ksort -r "1</div>
<div>6</div>
<div>9</div>
<div>3</div>
<div>2</div>
<div>7"</div>
<div></div>
<div>sorting file size :</div>
<div>./ksort -i 4 -s space "$(ls -l)"</div>
<div></div>
<div>sorting file size reverse:</div>
<div>./ksort -i 4 -s space -r "$(ls -l)"</div>
<div></div>
<div>sorting file size, and print size and filename:</div>
<div>./ksort -i 4 -s space -p 8,4 "$(ls -l)"<br /><br /><br /> ksort version 0.1.11<br /><div class="imageblock center"><a class="extensionIcon" href="http://www.cep.kr/blog/attachment/3385912274.xxx"><img src="http://www.cep.kr/blog/resources/image/extension/unknown.gif" alt="" /> ksort</a></div><div></div></div>
</div><p><strong><a href="http://kaget.cep.kr/blog/300?commentInput=true#entry300WriteComment">댓글 쓰기</a></strong></p>
k (1.1.3.101) command python version.
Kage Park
http://kaget.cep.kr/blog/294
2016-08-20T08:23:30+09:00
2016-08-20T20:38:00+09:00
k (1.1.3.101) command python version.<br /><br />"k" command helpful console work and saving and searching your idea to the command's DB.<br />This is very simple command. but sometimes helpful to you.<br /><br />Install :<br />1. download cep.pyc and k.py file (If you want sample DB file then download cep.db file)<br />2. copy thoese file to your bin directory.<br />3. mv k.py to k or make a soft link as "ln -s k.py k"<br />4. change permission to excutable (chmod +x k.py)<br />5. set your bin directory to PATH ( ex: ~/bin , echo "export PATH=${PATH}:~/bin" >> ~/.bashrc )<br />If your system have no python3 version then modify k.py file from "python3" to "python" at first line in k.py file.<br /><br /><br />Help: <br />$ k --help<br />CEP(Kage) personal command and library<br /> for helping CEP<br /> version: 1.1.3.101<br /> lib ver: 1.8.6.85<br /><br />Usage)<br />/Users/kpark/bin/k <option><br /><br /> --help [<module>] : help [ for <module>]<br /> -v(--version) : version<br /> -b(--build) <file> : build to binary file<br /> -m(--module) -b(--build) <file> : build to library file<br /> -h <hostname> : Make a hostname list<br /><br />/Users/kpark/bin/k <command> [<option of command>]<br /><br /> show/look/what : show DB<br /> ( Make a done a task in show command )<br /> save/add : save to DB<br /> update/change/replace : update to DB (*** Not support yet, just scheduled)<br /> recover : recover from trash to original DB (*** Not support yet, just scheduled)<br /> memory/remember : save to DB<br /> forget/del/delete/trash : remove in DB<br /> search <string> : find a <string> in all DB<br /> cleanup : Cleanup garbage data in DB file<br /> cleanup trash [all] : Cleanup trash DB (all: make a empty trash) (default: remain 7days trash from now on)<br /> pkg : Package handle<br /><br /> ping [<option of command>]<br /> ssh [<option of command>] -h [<id>@]<host> [<command>]<br /> scp [<option of command>] <file> [<id>@]<host>:[<path>]<br /> rsync [<option of command>] <file> [<id>@]<host>:[<path>]<br /> vi [<option of command>] <file><br /><br /><br />Example) <br />make a your own domain system.<br />$ k add host <hostname> --ip <ip> [ --desc "<descriptions>" ] [ --keyfile <ssh password less key file> ]<br />$ k add host my_laptop --ip 192.168.1.100<br />$ k add host my_laptop1 --ip 192.168.1.101 --desc "testing server"<br />$ k add host my_laptop2 --ip 192.168.1.102 --desc "password less ssh server" --keyfile ~/.ssh/id_rsa<br /><br />Show host list<br />$ k show host<br />192.168.1.100 my_laptop : <br />192.168.1.101 my_laptop1 : testing server<br />192.168.1.102 my_laptop2 : password less ssh server<br /><br />SSH/SCP/PING command ( command expression is same as Linux default commands )<br />$ k ping my_laptop<br />PING 192.168.1.100 (192.168.1.100): 56 data bytes<br />64 bytes from 192.168.1.100: icmp_seq=0 ttl=64 time=1.472 ms<br />64 bytes from 192.168.1.100: icmp_seq=1 ttl=64 time=0.622 ms<br /><br />$ k ssh me@my_laptop2<br />Warning: Permanently added '192.168.1.102' (ECDSA) to the list of known hosts.<br />Last login: Fri Aug 19 14:53:40 2016 from 192.168.1.100<br />my_laptop2:~ me$<br /><< Automatically download ssh-key data from DB and using ssh with temporary file and removed it >><br /><br />scp also using ssh-key file from DB.<br /><br />SSH/SCP/PING/RSYNC finding from DB and /etc/hosts and DNS. if using IP then just using the IP. <br />So, no matter what working as normal your operation on your linux box.<br /><br />Your own shell script commands :<br />if you make a simple script then your can add your script to the DB.<br />and you can use your own script from "k" command.<br /><br />example)<br />$ k show shell<br />1471648123.631903 k<br /><br />make a sample script <br />$ k k.k make_temp test<br /><br />$ k vi test.k<br /><< modify k shell for you >><br /><br />Add the test.k (k shell) to DB.<br />$ k add shell test --file test.k<br />Saved<br /><br />$k show shell<br />1471648123.631903 k<br />1471648164.937767 test<br /><br />Run the k shell from "k" command.<br />$ k kage$ k test --help<br />sh [<opt> [<input>] ] <== this is a bug at marge from old k shell to "k" command.<br /> sh <filename> <== this is a bug at marge from old k shell to "k" command.<br /><br /> --help : help<br /> -t <string> : test<br /><br />$ k test -t abc<br />abc<br /><br /><br />k shell example)<br />_k_test() { <br /> << main code >><br />}<br /><br />This "_k_<command name>() {}" is main function.<br />If you want using k shell then you can add "#include k.k" in your script like as test.k script.<br />Then you can use k shell scripting.<br /><br />very simple test2 script.<br />$ vi test2.k<br />_k_test2() {<br /> if [ "$1" == "--help" ]; then<br /> echo "My test2 help"<br /> exit<br /> elif [ "$1" == "-show" ]; then<br /> shift 1<br /> echo $*<br /> else<br /> echo $*<br /> fi<br />}<br /><br />very simple test3 script.<br />$ vi test3.k<br />#include k.k<br />_k_test3() {<br /> opt=("$@")<br /> if _k_opt --help 0 0 "${opt[@]}" >/dev/null; then<br /> echo "My test3 help"<br /> exit<br /> elif get_val=$(_k_opt -t 1 0 "${opt[@]}"); then<br /> _k_test3_sample $get_val || return 1<br /> else<br /> echo "Unknown option"<br /> _k_exit 1<br /> fi<br />}<br /><br />_k_test3_sample() {<br /> echo $*<br />}<br /><br /><br />It has no update function yet.<br />So, if you save wrong information or no more need saved information then please remove the information and re-add new information.<br /><br />If you remove a data in DB then the data will be saved at trash table in the same DB.<br />So, you can recover it later. (not yet support recover function)<br /><br />and you can use any linux command with "k" command like this.<br />$ k ls -F<br />Documents/ initial-setup-ks.cfg python/ Videos/<br />Downloads/ anaconda-ks.cfg Pictures/ rpmbuild/ bin/ Desktop/<br />Music/ Public/ Templates/<br /><br />$ k cat -A anaconda-ks.cfg | more<br />#version=RHEL7$<br /># System authorization information$<br />auth --enableshadow --passalgo=sha512$<br /><br /><div class="imageblock center"><a class="extensionIcon" href="http://kaget.cep.kr/blog/attachment/3124814038.pyc"><img src="http://kaget.cep.kr/blog/resources/image/extension/unknown.gif" alt="" /> cep.pyc</a></div><div></div><div class="imageblock center"><a class="extensionIcon" href="http://kaget.cep.kr/blog/attachment/4577133018.py"><img src="http://kaget.cep.kr/blog/resources/image/extension/unknown.gif" alt="" /> k.py</a></div><div></div><div class="imageblock center"><a class="extensionIcon" href="http://kaget.cep.kr/blog/attachment/5693095931.db"><img src="http://kaget.cep.kr/blog/resources/image/extension/unknown.gif" alt="" /> cep.db</a></div><div></div><p><strong><a href="http://kaget.cep.kr/blog/294?commentInput=true#entry294WriteComment">댓글 쓰기</a></strong></p>