생활의 발견....

brandon의 이미지

안녕하세요

저는 현업 네트워크 엔지니어입니다.
예전에 리눅스 프로그래밍을 한적이 있었는데, 여러가지 사정으로 그 회사를 나와서 지금은 si 업체에서 네트워크 엔지니어로 연명하고 있습니다. ^^;

저는 옥션이나 ebay , nbinside.com 등에서 좋은 매물이 없나 자주 들러 봅니다. (중독에 가까움)
그런데 이거 귀찮아서 리눅스에서 wget 을 이용해서, 5분 마다 한번씩 웹페이지내용을 긁어와서 새로운 게시물에 대한 정보를 자동으로 뿌려주는 프로그램을 한번 만들어야지... 하면서도 바쁘다는 핑계로 시작도 못하고 있는데요.

혹시 여러분들 중에서 이처럼 생활속의 프로그램밍을 하고 계신 분이 있는지 궁금합니다. 즉, 회사 업무 목적이 아니라 자기가 사용을 하기 위해서 이지요.

예를 들자면....

1. 나는 이메일이 오면 자동으로 알려주는 프로그램을 만들어서 몇달째 쓰고 있습니다.
2. 나는 내 금전출납부를 직접 프로그래밍해서 쓰고 있습니다.

등등이 되겠지요.

아울러 서로의 프로그램도 공유하면 더욱 유익할 것 같네요.

^^;

impactbar의 이미지

http://kltp.kldp.org/stories.php?story=01/12/19/4542367

예전에 kltp에 올렸던 날씨 긁어오는 스크립트 입니다.

조금 손봐서 디비에 넣어도 좋겠죠.

http://kltp.kldp.org/stories.php?story=02/07/04/5198981

회사 다닐때 필요해서 만든건데요.

야후 IT뉴스 긁어 와서 mysql에 넣어주는 스크립트 입니다.

정규식으로 본문만 긁어 오는데 테이블에 광고가 추가 되면서

약간의 광고도 같이 들어 옮니다..^^;

디비관련테이블은 수정하셔야 합니다.

두 프로그램 모두 lynx가 필요하네요.

jedi의 이미지

앗 .. 날씨 스크립트 저도 사용 중 입니다. :)

제가 사는곳이 다른곳보다 기온가 낮다는것을 보면서 위안을 삼고 있지요..

그리고 스포츠 찌라시의 만화 저장용 스크립트도 누군가 만드신것을 살짝 수정해서 cron에 등록 해서 쓰는 중입니다.

#!/bin/sh
# Donga Manhwa V 0.2.1 by Yang

URL0="http://www.sportsseoul.com/html/comic/fighter/"

wdir="/data/"
a=`cat $wdir/b.dat`

if /usr/bin/wget -P$wdir/baram "${URL0}${a}/1.gif"
# if [ -f $wdir/baram/1.gif ]
then
	mv $wdir/baram/1.gif "$wdir/baram/${a}_1.gif"
else
	exit 1
fi
if /usr/bin/wget -P$wdir/baram "${URL0}${a}/2.gif"
# if [ -f $wdir/baram/2.gif ]
then
	mv $wdir/baram/2.gif "$wdir/baram/${a}_2.gif"
else
	exit 1
fi
if /usr/bin/wget -P$wdir/baram "${URL0}${a}/3.gif"
# if [ -f $wdir/baram/3.gif ]
then
	mv $wdir/baram/3.gif "$wdir/baram/${a}_3.gif"
else
	exit 1
fi
if /usr/bin/wget -P$wdir/baram "${URL0}${a}/4.gif"
# if [ -f $wdir/baram/4.gif ]
then
	mv $wdir/baram/4.gif "$wdir/baram/${a}_4.gif"
else
	exit 1
fi

a=`expr $a + 1`
echo $a > $wdir/b.dat

exit 0 

이거 저작권 위반인데.... :(

가끔 못보고 지나가거나 이전회가 보고 싶을때 봅니다.

위 스크립트 단순화 해주시면 어떤까요? :D

--
가짜에는 두 가지 종류가 있다. 진짜처럼 꾸며 놓은 가짜와 진짜처럼 행사하는
가짜다. 꾸며 놓은 가짜에게 속았을 경우보다 행세하는 가까에게 속았을 경우가
한결 비애감을 짙게 만든다. 전자는 물건에 대한 절망을 가져다 주지만, 후자는
인간에 대한 절망을 가져다 주기 때문이다.
-- 이외수, <감성사전> 중에서, 1994년

+++ 여기부터는 서명입니다. +++
국가 기구의 존속을 위한 최소한의 세금만을 내고, 전체 인민들이 균등한 삶을
영위할 수 있는 착취가 없는 혁명의 그날은 언제나 올 것인가!
-- 조정래, <태백산맥> 중에서, 1986년

brandon의 이미지

여러분의 열화와 같은 성원으로 저도 하나 올립니다.


#!/usr/bin/perl

# 만든놈 : 정헌학 
# 만든날 : 2002.5.7
# 이메일 : hunhak@naver.com
# 설  명 : 자기의 ftp 계정이 있는 서버에 자동접속하여 
#          파일을 백업해 준다.
#          백업된 파일 디렉토리는 그 시간에 따른다.

$CMD = "date";
$FTPSERVER = "web.xxx.com";
$ID = "hunhakproject";
$PASS = "xxxx";

open(DATE, "$CMD |");
while(<DATE>){
	if(1)
	{
		$_ =~ s/ //g;
	}
	$date = $_;
}	
close(DATE);	

system("ncftpput -u $ID -p $PASS -m -R $FTPSERVER '$date' -R * ");

요렇게 하고 실행만 시켜주면, 날짜별로 백업 디렉토리가 생기고 ftp 로
백업해 줍니다. 참 편해요~

hi ~

kihoori의 이미지

생활속의 ...라면...

알람시계

일기

가계부를 만들어 쓰고 있죠...

커커커커

brandon의 이미지

내가 얼마나 게으른 놈인지 말해주는 스크립트

#!/usr/bin/perl



print "\n\n Hi ~ HUNHAK PLEASE SELECT THE MENU!!   \n\n";

print   "----------------- MENU ----------------   \n\n";
print   " 1 ) mount win, win1, win2 partitions       \n";
print   " 2 ) connect ftp web.xxx id : xxx    \n";
print   " 3 ) connect ftp web.xxx id : xxxxxx \n";
print   " 4 ) exec konqueror                         \n";
print   " 5 ) exec resktop                           \n";
print   " 6 ) exec hanterm 			                 \n";
print   " 7 ) exec xmms                              \n";
print   " 8 ) exec kmail 			             \n\n\n";

$input = <STDIN>;
chomp($input);

if($input eq "1") 
{ 
	if(!( -e "/win")) { mkdir("/win", 0755) };
	if(!( -e "/win1")) { mkdir("/win1", 0755) };
	if(!( -e "/win2")) { mkdir("/win2", 0755) };
	
	system("mount /dev/hda1 /win");
	system("mount /dev/hda6 /win1");
	system("mount /dev/hda7 /win2");
    exit(1);
}
if($input eq "2")
{
	system("ncftp -u xxxxx -p 'xxxxxxx' web.xxx.com");
    exit(1);
}
if($input eq "3")
{
	system("ncftp -u xxxxx -p 'xxxxxxx' web.xxx.com");
    exit(1);
}
if($input eq "4")
{
	system("konqueror &");
    exit(1);
}
if($input eq "5")
{
	system("rdesktop 61.250.217.xx &");
    exit(1);
}
if($input eq "6")
{
	print "locate ? 1 , 2, 3, 4 ?\n"; 
    $locate = <STDIN>;
    chomp($locate);
    
    if( $locate eq "1")
    {
     system("hanterm -geometry 80x23+2+2 -bg grey20 -fg white &" );
    }
    if( $locate eq "2")
    {
     system("hanterm -geometry 80x23+2+415 -bg grey20 -fg white &" );
    }
    if( $locate eq "3")
    {
     system("hanterm -geometry 80x23+500+2 -bg grey20 -fg white &" );
    }
    if( $locate eq "4")
    {
     system("hanterm -geometry 80x23+500+415 -bg grey20 -fg white &" );
    }
    exit(1);
}
if($input eq "7")
{
	system("xmms &");
	system("artsd &");
    exit(1);
}
if($input eq "8")
{
	system("kmail &" );
    exit(1);
}
else 
{
	print "that's to bad, Are you stupid ?\n\n";
	exit(-1);
}

hi ~

overpace의 이미지

#!/usr/bin/perl
###########################################################################
# Program Name : auto.pl                                                  #
# Date : 2003/ 05/ 21                                                     #
# Creater : overpace (overpace80@hotmail.com)                             #
# HomePage : http://www.yellowseed.net                                    #
###########################################################################
# Road Map                                                                #
# 1. Qmail Support                                                        # 
# 2. Web CGI Support                                                      # 
# 2. Oracle Support                                                       # 
########################################################################### 
###########################################################################
# System Environment                                                      # 
#                                                                         # 
# OS : Unix, Linux, BSD (other Un*x)                                      # 
# Web Server : Apache 1.3.x                                               # 
# DNS : bind 8.x                                                          # 
# Mail : Sendmail 8.x                                                     # 
# Language : Perl5.x                                                      # 
########################################################################### 

#User Setting Variables 
$BIND_PATH =""; 
$APACHE_PATH =""; 
$TMP_HOME = "/tmp"; 
$USR_HOME = "/home"; 
$USR_WWW = "www"; 

//default variables
$APACHE_TMP = "/tmp/httpd.conf"; 
$NAMED_TMP = "/tmp/named.tmp"; 
$ZONE_TMP = "/tmp/zone.tmp"; 
 
print "-------------------------------------------------------------------\n"; 
print "---------------------- Web Hosting User Setup ---------------------\n"; 
print "------------------------------------------------ by Overpace ------\n"; 
print "--------------------------------------------------- V.0.1 ---------\n"; 
print "Step 1. Apache Setup \n"; 
print "1. Input User ID :"; 
$userid = <STDIN>; 
chomp $userid; 
if($userid eq ""){ 
   print "Please Enter User's userid(quit:q): "; 
   $userid = <STDIN>; 
   chomp $userid; 
   if($userid == "q"){ 
      die "Exit Script Step 1-1\n"; 
   } 
} 
print "2. Input $userid's Password :"; 
$password = <STDIN>; 
chomp $password; 
if($password eq ""){ 
   print "Please Enter Users Password(quit:q): "; 
   $password = <STDIN>; 
   chomp $password; 
   if($password eq "q"){ 
      die "Exit Script Step 1-2\n"; 
   } 
} 
print "3. Input Users  Group :"; 
$u_group = <STDIN>; 
chomp $u_group; 
if($u_group eq ""){ 
   print "Please Enter $userid's Group(quit:q): "; 
   $u_group = <STDIN>; 
   chomp $u_group; 
   if($u_group eq "q"){ 
      die "Exit Script Step 1-3\n"; 
   } 
} 
#End OF Input Line 
#Making  User 
system("adduser -m -s /bin/hash -d /$USR_HOME/$userid -g $u_group $userid -p $password"); 
#Setting Quota 
print "Do You Have Quota System? (y/n):"; 
$quota = <STDIN>; 
chomp $quota; 
if($quota eq "y"){ system("edquota -u $userid"); } 
#make User Home Directory 
system("chmod 701 $USR_HOME/$userid"); 
system("mkdir $USR_HOME/$userid/$USR_WWW"); 
system("chmod 705 $USR/HOME/$userid/$USR_WWW"); 
system("chown $userid:$u_group $USR_HOME/$userid/$USR_WWW"); 
system("mkdir $USR_HOME/$userid/www_log"); 
system("chmod 705 $USR_HOME/$userid/www_log"); 
system("chown $userid:$u_group $USR_HOME/$userid/www_log"); 
print "Complete User Setup\n"; 
print "-------------------------------------------------------------------\n"; 
print "Step 2. Modify httpd.conf\n"; 
print "1. Input Your httpd.conf locate\n"; 
print "(default = /usr/local/apache/conf/httpd.conf):"; 
$APACHE_CONF = <STDIN>; 
chomp $APACHE_CONF; 
if($APACHE_CONF eq ""){ 
   $APACHE_CONF = "/usr/local/apache/conf/httpd.conf"; 
} 
print "2. Input User's Domain :"; 
$domain = <STDIN>; 
chomp $domain; 
if($domain eq ""){ 
   print "Please Enter User's Domain(quit:q): "; 
   $domain = <STDIN>; 
   chomp $domain; 
   if($domain eq "q" || $domain == ""){ 
      die "Exit Script Step 2-2\n"; 
   } 
} 
print "3. Input Server IP :"; 
$HOST_ADDR = <STDIN>; 
chomp $HOST_ADDR; 
if($HOST_ADDR eq ""){ 
   print "Please Enter Server Ip address: "; 
   $HOST_ADDR = <STDIN>; 
   chomp $HOST_ADDR; 
   if($HOST_ADDR eq "" || $HOST_ADDR ==""){ 
      die "Exit Script Step 2-3\n"; 
   } 
} 
#File Open 
open ( ApacheHandle ,">$APACHE_TMP" ) || die "Cannot Make $APACHE_TMP\n"; 
print ApacheHandle "#edit -----------------------------------------------\n";
print ApacheHandle "<VirtualHost $HOST_ADDR>\m";
print ApacheHandle "ServerAdmin $userid@$domain\m";
print ApacheHandle "DocumentRoot $USR_HOME/$userid/$USR_WWW\n";
print ApacheHandle "ServerName www.$domain\n"; 
print ApacheHandle "ErrorLog $USR_HOME/$userid/www_log/error_log\n";
print ApacheHAndle "AccessLog $USR_HOME/$userid/www_log/access_log common\n"; 
print ApacheHandle "</VirtualHost>\n";
close(ApacheHandle); 
system ("cat $APACHE_TMP >> $APACHE_CONF"); 
print "Complete Apache Setup\n"; 
print "-------------------------------------------------------------------\n"; 
print "Step 3. DNS Setting\n"; 
print "1. Input Your named.conf locate\n"; 
print "(default = /etc/named/named.conf):"; 
$NAMED_CONF = <STDIN>; 
chomp $NAMED_CONF; 
if($NAMED_CONF eq ""){ 
   $NAMED_CONF="/etc/named/named.conf"; 
} 
open( DnsHandle ,">$NAMED_TMP") || die "Cannot Make $NAMED_TMP\n"; 
print DnsHandle "zone \"$domain\" {\n"; 
print DnsHandle  "      type master\;\n"; 
print DnsHandle  "      file \"$doamin.zone\"\;\n"; 
print Dnshandle  "\;\n"; 
close(DnsHandle); 
print "2. Input Your NAME SERVER(ex : ns.kornet.net):"; 
$NS_SERVER = <STDIN>; 
chomp $NS_SERVER; 
if($NS_SERVER eq ""){ 
  print "Please Your NAME SERVER :"; 
   $NS_SERVER = <STDIN>; 
   chomp $NS_SERVER; 
   if($NS_SERVER eq "" || $NS_SERVER =="q"){ 
      die "Exit Script Step 3-2\n"; 
   } 
} 
$ZONE_PATH = "/etc/named"; 
open (ZoneHandle , ">$ZONE_TMP") || die "Cannot Make $ZONE_TMP\n"; 
print ZoneHandle "@        IN      SOA   localhost.  $userid.$domain.    (\n"; 
print ZoneHandle "                                20000402  \; Serial\n"; 
print ZoneHandle "                                21600   \; Refreshi(6h)\n"; 
print ZoneHandle "                                900     \; Retry(15min)\n"; 
print ZoneHandle "                                604800  \; Expire(7d)\n"; 
print ZoneHandle "                                43200)  \; Minimum(12h)\n"; 
print ZoneHandle "                IN      NS      $NAME_SERVER.\n"; 
print ZoneHandle "\;\n"; 
print ZoneHandle "                IN      A       $HOST_ADDR\n"; 
print ZoneHandle "                IN      MX      0       $domain.\n"; 
print ZoneHandle "www             IN      A       $HOST_ADDR\n"; 
print ZoneHandle "                IN      MX      0       $domain.\n"; 
close(ZoneHandle); 
system("cp $ZONE_TMP $ZONE_PATH/$domain.zone"); 

#config mail, mysql 
print "-------------------------------------------------------------------\n"; 
print "Step 4. Mail Server Setup\n"; 
print "1. Choose mail Server:\n 1.Sendmail /t 2.Qmail \n Number(default 1):"; 
$MAIL_SERVER = <STDIN>; 
 chomp $MAIL_SERVER; 
if(!$MAIL_SERVER eq "1" || !$MAIL_SERVER eq "2"){ 
   print "Your Choice is Wrong (1,2):"; 
   $MAIL_SERVER = <STDIN>; 
   chomp $MAIL_SERVER; 
   if(!$MAIL_SERVER eq "1" || !$MAIL_SERVER eq "2"){ 
      die "Exit Script Step 4-1\n"; 
   } 
} 
if($MAIL_SERVER eq "1"){ 
   open(MailHandle, ">>/etc/sendmail.cw"); 
   print MailHandle "$domain\n"; 
   close(MailHandle); 
   open(LocalNameHandle,">>/etc/mail/local-host-names"); 
   print LocalNameHandle "$domain\n"; 
   close(LocalNameHandle); 
   open(RelayHandle ,">>/etc/mail/relay-domains"); 
   print RelayHandle "$dmain\n"; 
   close(RelayHandle); 
   open(UserHandle, ">>/etc/mail/virtualtable"); 
   print UserHandle "webmaster@$domain\t$userid\n"; 
   close(UserHandle); 
   system ("makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable"); 
} 
if($MAIL_SERVER eq "2"){ 
   #qmail config 
   print ("Not Support\n"); 
} 
print "-------------------------------------------------------------------\n"; 
print "Step 5. MySQL Setup\n"; 
print "1. Input mysql PATH\n"; 
print "(default : /usr/local/mysql/bin):"; 
$MYSQL_PATH = <STDIN>; 
chomp $MYSQL_PATH; 
if($MYSQL_PATH eq ""){ 
   $MYSQL_PATH = "/usr/local/mysql/bin"; 
} 

print "2. Mysql Root Password :"; 
$MYSQL_PASS = <STDIN>; 
chomp $MYSQL_PASS; 
 
print "3. Mysql User Passowrd :"; 
$MYSQL_USER_PASS = <STDIN>; 
chomp $MYSQL_USER_PASS; 

system ("$MYSQL_PATH/mysqladmin -uroot -p$MYSQL_PASS create $userid"); 
open(SQLUSER, ">user.sql");
print SQLUSER "INSERT INTO mysql.user VALUES('localhost','$userid',password('$MYSQL_USER_PASS'),";
print SQLUSER "'n','n','n','n','n','n','n','n','n','n','n','n','n','n');\n";
print SQLUSER "insert into db values('localhost','$userid','$userid',"; 
print SQLUSER "'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')'";
close(SQLUSER);
#Server Restart 
#system($BIND_PATH); 
#system($APACHE_PATH);

예전에 호스팅 회사 다니시던 분이 부탁해서 만들었던것인데.
머 -- 허접의 극치를 달리는거죠.. -_-a
좀 좋게 고쳐주세요

거짓은 두 진실의 사이에 있다

impactbar의 이미지

급하게 만들어 보았습니다.

기상청에서 올리는 날씨 자료를 mysql에 저장하는 스크립트

크론에 등록해서 1시간 단위로 돌리세요. ^^;

mysql 계정, w3m 또는 lynx 가 필요합니다.

http://user.chollian.net/~darkeye/weatherstation.tgz

버그소년의 이미지

전 종종 오카리나를 만듭니다.

오카리나 아시죠?

흙으로 빚어서 만드는 피리(?)라구 해야하나?

아무튼 만들어놓고 구멍뚫어가며 도레미~ 튜닝을 하는데..

귀로 들으면서 튜닝을 하면 시간도 오래걸리고, 정확하지도 않은거 같아서

컴에 마이크 달고 프로그램 간단하게 짜서 쓰고있습니다..

지금 MRI쪽 프로그램하는 녀석에게 부탁해서 더 멋지고 정확하게 새로 만든걸 쓰긴 하지만..

가끔은 밥을 굶어도 살 수 있다.

맹고이의 이미지

집에 있는 가족앨범들을 스캔해서 웹상에 보존하려는데
수많은 사진들을 게시판같은 곳에 등록하긴 귀찮고
그냥 간단한 이미지 뷰어를 만들어 봤습니다...

아무 기능 없구요 그냥 파일업로드하면
파일이름이랑 이미지 썸네일이 보이는 것 뿐입니다-_-;
아직 만들고 있는 중이긴 하지만...

http://gon1982.nafly.net/library/project/image_viewer/view_main.php?dir=picture1&page=1

그리고... 제 남은 복무기간 계산기-_- 우측하단에 붙어 있어요.

http://gon1982.nafly.net

둘다 php를 재대로 배우지도 않고 만들어서 소스는 초허접합니다^^;

아, 학교 댕길때 Win32API로 '미라레솔시미' 소리만 나오는 기타튜너도 만들어 봤었습니당.
튜닝은 귀로 듣고 하기-_-; 소스는 없어져 버렸네요^^;