host -t mx hanmail.net 

[root@localhost ~]$ host -t mx daum.net 
daum.net. mail is handled by 10 mx1.hanmail.net. 
daum.net. mail is handled by 10 mx2.hanmail.net. 
daum.net. mail is handled by 10 mx3.hanmail.net. 
daum.net. mail is handled by 10 mx4.hanmail.net. 
daum.net. mail is handled by 10 mx5.hanmail.net. 
daum.net. mail is handled by 10 mx6.hanmail.net. 
daum.net. mail is handled by 10 mx7.hanmail.net. 
daum.net. mail is handled by 10 mx8.hanmail.net. 
daum.net. mail is handled by 10 mx9.hanmail.net. 
daum.net. mail is handled by 10 mx10.hanmail.net. 

'Tip' 카테고리의 다른 글

ubuntu 메일 보내기  (0) 2017.01.06
mysql backup  (0) 2017.01.06
Linux cpu, mem 등 확인하기  (0) 2017.01.06
mutt 메일 보내기  (0) 2017.01.06
TCP 연결수 확인 스크립트  (0) 2017.01.06
동안 텔넷 접속을 계정 별로 막을 수 있는 방법이 딱히 없었다. 
그런 의미에서 아래 방법은 정말로 반가운 일이다. 
호스팅 업계에서는 유용하게 사용될 것으로 생각된다. 

Proftpd 보면 /etc/proftpd/conf/ftpusers 파일이 있을것이다. 

ftpusers 파일 안에 있는 계정은 FTP로 접근 못한다. 이걸 텔넷이나 ssh에 응용하면 된다. 

/etc/pam.d/ftp 에 보면 

auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/proftpd/conf/ftpusers onerr=succeed 
이렇게 있을 것이다. 위 라인이 없다면 추가한다. 

file=... 이 부부만 수정해 주면 된다. 

1.텔넷을 막고 싶으면 

/etc/pam.d/login 

auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/loginusers onerr=succeed 
위 라인이 없다면 추가한다. 
/etc/loginusers 파일을 만들어서 계정을 넣어주면 된다. 

2.ssh 도 할수 있다. 

/etc/pam.d/ssh 

auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ssh/sshusers onerr=succeed 

이렇게 설정해주고 계정을 집어 넣으면 된다..... 


'Server' 카테고리의 다른 글

ftp를 이용한 Network 백업  (0) 2017.01.06
쉘에서 PATH 보이기  (0) 2017.01.06
쉘다루기/쉘의 종류  (0) 2017.01.06
DISK Quota 설정하기  (0) 2017.01.06
httpd.conf  (0) 2017.01.06

[GenPorts]
1=TCP Port Service Multiplexer
2=TCP/UDP Management Utility
3=TCP/UDP Compression Process
5=TCP/UDP Remote Job Entry
7=TCP/UDP Echo
11=TCP/UDP Systat Active Users
13=TCP/UDP Daytime
17=TCP/UDP Quote of the Day
18=TCP/UDP Message Send Protocol
19=TCP/UDP Character Generator
20=TCP/UDP File Transfer [Default Data]
21=TCP/UDP File Transfer [Control]
22=TCP/UDP SSH Remote Login Protocol
23=TCP/UDP Telnet
25=TCP/UDP Simple Mail Transfer
27=TCP/UDP NSW User System FE
29=TCP/UDP MSG ICP
31=TCP/UDP MSG Authentication
33=TCP/UDP Display Support Protocol
37=TCP/UDP Time
38=TCP/UDP Route Access Protocol
39=TCP/UDP Resource Location Protocol
41=TCP/UDP Graphics
42=TCP/UDP Host Name Server
43=TCP/UDP WhoIs
44=TCP/UDP MPM FLAGS Protocol
45=TCP/UDP Message Processing Module [recv]
46=TCP/UDP MPM [default send]
47=TCP/UDP NI FTP
48=TCP/UDP Digital Audit Daemon
49=TCP/UDP Login Host Protocol (TACACS)
50=TCP/UDP Remote Mail Checking Protocol
51=TCP/UDP IMP Logical Address Maintenance
52=TCP/UDP XNS Time Protocol
53=TCP/UDP Domain Name Server
54=TCP/UDP XNS Clearinghouse
55=TCP/UDP ISI Graphics Language
56=TCP/UDP XNS Authentication
58=TCP/UDP XNS Mail
61=TCP/UDP NI MAIL
62=TCP/UDP ACA Services
63=TCP/UDP whois++
64=TCP/UDP Communications Integrator (CI)
65=TCP/UDP TACACS-Database Service
66=TCP/UDP Oracle SQL*NET
67=TCP/UDP Bootstrap Protocol Server
68=TCP/UDP Bootstrap Protocol Client
69=TCP/UDP Trivial File Transfer
70=TCP/UDP Gopher
71=TCP/UDP Remote Job Service
72=TCP/UDP Remote Job Service
73=TCP/UDP Remote Job Service
74=TCP/UDP Remote Job Service
76=TCP/UDP Distributed External Object Store
78=TCP/UDP vetTCP
79=TCP/UDP Finger
80=TCP/UDP World Wide Web HTTP
81=TCP/UDP HOSTS2 Name Server
82=TCP/UDP XFER Utility
83=TCP/UDP MIT ML Device
84=TCP/UDP Common Trace Facility
85=TCP/UDP MIT ML Device
86=TCP/UDP Micro Focus Cobol
88=TCP/UDP Kerberos
89=TCP/UDP SU=MIT Telnet Gateway
90=TCP/UDP DNSIX Securit Attribute Token Map
91=TCP/UDP MIT Dover Spooler
92=TCP/UDP Network Printing Protocol
93=TCP/UDP Device Control Protocol
94=TCP/UDP Tivoli Object Dispatcher
95=TCP/UDP SUPDUP
96=TCP/UDP DIXIE Protocol Specification
97=TCP/UDP Swift Remote Virtural File Protocol
98=TCP/UDP TAC News
99=TCP/UDP Metagram Relay
101=TCP/UDP NIC Host Name Server
102=TCP/UDP ISO-TSAP Class 0
103=TCP/UDP Genesis Point-to-Point Trans Net
104=TCP/UDP ACR-NEMA Digital Imag. & Comm. 300
105=TCP/UDP CCSO name server protocol, Mailbox Name Nameserver
106=TCP/UDP 3COM-TSMUX
107=TCP/UDP Remote Telnet Service
108=TCP/UDP SNA Gateway Access Server
109=TCP/UDP Post Office Protocol - Version 2
110=TCP/UDP Post Office Protocol - Version 3
111=TCP/UDP SUN Remote Procedure Call
112=TCP/UDP McIDAS Data Transmission Protocol
113=TCP/UDP Authentication Service, Ident
114=TCP/UDP Audio News Multicast
115=TCP/UDP Simple File Transfer Protocol
116=TCP/UDP ANSA REX Notify
117=TCP/UDP UUCP Path Service
118=TCP/UDP SQL Services
119=TCP/UDP Network News Transfer Protocol
120=TCP/UDP CFDPTKT
121=TCP/UDP Encore Expedited Remote Pro.Call
122=TCP/UDP SMAKYNET
123=TCP/UDP Network Time Protocol
124=TCP/UDP ANSA REX Trader
125=TCP/UDP Locus PC-Interface Net Map Ser
126=TCP/UDP Unisys Unitary Login
127=TCP/UDP Locus PC-Interface Conn Server
128=TCP/UDP GSS X License Verification
129=TCP/UDP Password Generator Protocol
130=TCP/UDP cisco FNATIVE
131=TCP/UDP cisco TNATIVE
132=TCP/UDP cisco SYSMAINT
133=TCP/UDP Statistics Service
134=TCP/UDP INGRES-NET Service
135=TCP/UDP DCE endpoint resolution
136=TCP/UDP PROFILE Naming System
137=TCP/UDP NETBIOS Name Service
138=TCP/UDP NETBIOS Datagram Service
139=TCP/UDP NETBIOS Session Service
140=TCP/UDP EMFIS Data Service
141=TCP/UDP EMFIS Control Service
142=TCP/UDP Britton-Lee IDM
143=TCP/UDP Internet Message Access Protocol
144=TCP/UDP NewS
145=TCP/UDP UAAC Protocol
146=TCP/UDP ISO-IP0
147=TCP/UDP ISO-IP
148=TCP/UDP Jargon
149=TCP/UDP AED 512 Emulation Service
150=TCP/UDP SQL-NET
151=TCP/UDP HEMS
152=TCP/UDP Background File Transfer Program
153=TCP/UDP SGMP
154=TCP/UDP NETSC
155=TCP/UDP NETSC
156=TCP/UDP SQL Service
157=TCP/UDP KNET=VM Command=Message Protocol
158=TCP/UDP PCMail Server
159=TCP/UDP NSS-Routing
160=TCP/UDP SGMP-TRAPS
161=TCP/UDP SNMP
162=TCP/UDP SNMPTRAP
163=TCP/UDP CMIP=TCP Manager
164=TCP/UDP CMIP=TCP Agent
165=TCP/UDP Xerox
166=TCP/UDP Sirius Systems
167=TCP/UDP NAMP
168=TCP/UDP RSVD
169=TCP/UDP SEND
170=TCP/UDP Network PostScript
171=TCP/UDP Network Innovations Multiplex
172=TCP/UDP Network Innovations CL=1
173=TCP/UDP Xyplex
174=TCP/UDP MAILQ
175=TCP/UDP VMNET
176=TCP/UDP GENRAD-MUX
177=TCP/UDP X Display Manager Control Protocol
178=TCP/UDP NextStep Window Server
179=TCP/UDP Border Gateway Protocol
180=TCP/UDP Intergraph
181=TCP/UDP Unify
182=TCP/UDP Unisys Audit SITP
183=TCP/UDP OCBinder
184=TCP/UDP OCServer
185=TCP/UDP Remote-KIS
186=TCP/UDP KIS Protocol
187=TCP/UDP Application Communication Interface
188=TCP/UDP Plus Five's MUMPS
189=TCP/UDP Queued File Transport
190=TCP/UDP Gateway Access Control Protocol
191=TCP/UDP Prospero Directory Service
192=TCP/UDP OSU Network Monitoring System
193=TCP/UDP Spider Remote Monitoring Protocol
194=TCP/UDP Internet Relay Chat Protocol
195=TCP/UDP DNSIX Network Level Module Audit
196=TCP/UDP DNSIX Session Mgt Module Audit Redir
197=TCP/UDP Directory Location Service
198=TCP/UDP Directory Location Service Monitor
199=TCP/UDP SMUX
200=TCP/UDP IBM System Resource Controller
201=TCP/UDP AppleTalk Routing Maintenance
202=TCP/UDP AppleTalk Name Binding
203=TCP/UDP AppleTalk Unused
204=TCP/UDP AppleTalk Echo
205=TCP/UDP AppleTalk Unused
206=TCP/UDP AppleTalk Zone Information
207=TCP/UDP AppleTalk Unused
208=TCP/UDP AppleTalk Unused
209=TCP/UDP The Quick Mail Transfer Protocol
210=TCP/UDP ANSI Z39.50
211=TCP/UDP Texas Instruments 914C=G Terminal
212=TCP/UDP ATEXSSTR
213=TCP/UDP IPX
214=TCP/UDP VM PWSCS
215=TCP/UDP Insignia Solutions
216=TCP/UDP Computer Associates Int'l License Server
217=TCP/UDP dBASE Unix
218=TCP/UDP Netix Message Posting Protocol
219=TCP/UDP Unisys ARPs
220=TCP/UDP Interactive Mail Access Protocol v3
221=TCP/UDP Berkeley rlogind with SPX auth
222=TCP/UDP Berkeley rshd with SPX auth
223=TCP/UDP Certificate Distribution Center
242=TCP/UDP Direct
243=TCP/UDP Survey Measurement
244=TCP/UDP Dayna
245=TCP/UDP LINK
246=TCP/UDP Display Systems Protocol
247=TCP/UDP SUBNTBCST_TFTP
248=TCP/UDP bhfhs
256=TCP/UDP RAP
257=TCP/UDP Secure Electronic Transaction
258=TCP/UDP Yak Winsock Personal Chat
259=TCP/UDP Efficient Short Remote Operations
260=TCP/UDP Openport
261=TCP/UDP IIOP Name Service over TLS=SSL
262=TCP/UDP Arcisdms
263=TCP/UDP HDAP
280=TCP/UDP http-mgmt
281=TCP/UDP Personal Link
282=TCP/UDP Cable Port A=X
309=TCP/UDP EntrustTime
310=TCP/UDP bhmds
344=TCP/UDP Prospero Data Access Protocol
345=TCP/UDP Perf Analysis Workbench
346=TCP/UDP Zebra server
347=TCP/UDP Fatmen Server
348=TCP/UDP Cabletron Management Protocol
349=TCP/UDP mftp
350=TCP/UDP MATIP Type A
351=TCP/UDP MATIP Type B, bhoetty
352=TCP/UDP DTAG
352=TCP/UDP bhoedap4
354=TCP/UDP bh611
357=TCP/UDP bhevent
368=UDP Wingate 3.0
371=TCP/UDP Clearcase
372=TCP/UDP ListProcessor
373=TCP/UDP Legent Corporation
374=TCP/UDP Legent Corporation
375=TCP/UDP Hassle
376=TCP/UDP Amiga Envoy Network Inquiry Proto
377=TCP/UDP NEC Corporation
378=TCP/UDP NEC Corporation
379=TCP/UDP TIA=EIA=IS-99 modem client
380=TCP/UDP TIA=EIA=IS-99 modem server
381=TCP/UDP hp performance data collector
382=TCP/UDP hp performance data managed node
383=TCP/UDP hp performance data alarm manager
384=TCP/UDP A Remote Network Server System
385=TCP/UDP IBM Application
386=TCP/UDP ASA Message Router Object Def.
387=TCP/UDP Appletalk Update-Based Routing Pro.
388=TCP/UDP Unidata LDM Version 4
389=TCP/UDP Lightweight Directory Access Protocol
390=TCP/UDP UIS
391=TCP/UDP SynOptics SNMP Relay Port
392=TCP/UDP SynOptics Port Broker Port
393=TCP/UDP Data Interpretation System
394=TCP/UDP EMBL Nucleic Data Transfer
395=TCP/UDP NETscout Control Protocol
396=TCP/UDP Novell Netware over IP
397=TCP/UDP Multi Protocol Trans. Net.
398=TCP/UDP Kryptolan
399=TCP/UDP ISO Transport Class 2 Non-Control over TCP
400=TCP/UDP Workstation Solutions
401=TCP/UDP Uninterruptible Power Supply
402=TCP/UDP Genie Protocol
403=TCP/UDP decap
404=TCP/UDP nced
405=TCP/UDP ncld
406=TCP/UDP Interactive Mail Support Protocol
407=TCP/UDP Timbuktu
408=TCP/UDP Prospero Resource Manager Sys. Man.
409=TCP/UDP Prospero Resource Manager Node Man.
410=TCP/UDP DECLadebug Remote Debug Protocol
411=TCP/UDP Remote MT Protocol
412=TCP/UDP Trap Convention Port
413=TCP/UDP SMSP
414=TCP/UDP InfoSeek
415=TCP/UDP BNet
416=TCP/UDP Silverplatter
417=TCP/UDP Onmux
418=TCP/UDP Hyper-G
419=TCP/UDP Ariel
420=TCP/UDP SMPTE
421=TCP/UDP Ariel
422=TCP/UDP Ariel
423=TCP/UDP IBM Operations Planning and Control Start
424=TCP/UDP IBM Operations Planning and Control Track
425=TCP/UDP ICAD
426=TCP/UDP smartsdp
427=TCP/UDP Server Location
428=TCP/UDP OCS_CMU
429=TCP/UDP OCS_AMU
430=TCP/UDP UTMPSD
431=TCP/UDP UTMPCD
432=TCP/UDP IASD
433=TCP/UDP NNSP
434=TCP/UDP MobileIP-Agent
435=TCP/UDP MobilIP-MN
436=TCP/UDP DNA-CML
437=TCP/UDP comscm
438=TCP/UDP dsfgw
439=TCP dasp
440=TCP/UDP sgcp
441=TCP/UDP decvms-sysmgt
442=TCP/UDP cvc_hostd
443=TCP/UDP http protocol over TLS=SSL
444=TCP/UDP Simple Network Paging Protocol
445=TCP/UDP Microsoft-DS
446=TCP/UDP DDM-RDB
447=TCP/UDP DDM-RFM
448=TCP/UDP DDM-BYTE
449=TCP/UDP AS Server Mapper
450=TCP/UDP TServer
451=TCP/UDP Cray Network Semaphore server
452=TCP/UDP Cray SFS config server
453=TCP/UDP CreativeServer
454=TCP/UDP ContentServer
455=TCP/UDP CreativePartnr
456=TCP/UDP macon-UDP
457=TCP/UDP scohelp
458=TCP/UDP apple quick time
459=TCP/UDP ampr-rcmd
460=TCP/UDP skronk
461=TCP/UDP DataRampSrv
462=TCP/UDP DataRampSrvSec
463=TCP/UDP alpes
464=TCP/UDP kpasswd
465=TCP/UDP smtp protocol over TLS=SSL (was ssmtp)
466=TCP/UDP digital-vrc
467=TCP/UDP mylex-mapd
468=TCP/UDP proturis
469=TCP/UDP Radio Control Protocol
470=TCP/UDP scx-proxy
471=TCP/UDP Mondex
472=TCP/UDP ljk-login
473=TCP/UDP hybrid-pop
474=TCP/UDP tn-tl-w2
475=TCP TCPnethaspsrv
476=TCP/UDP tn-tl-fd1
477=TCP/UDP ss7ns
478=TCP/UDP spsc
479=TCP/UDP iafserver
480=TCP/UDP iafdbase
481=TCP/UDP Ph service
482=TCP/UDP bgs-nsi
483=TCP/UDP ulpnet
484=TCP/UDP Integra Software Management Environment
485=TCP/UDP Air Soft Power Burst
486=TCP/UDP avian
487=TCP/UDP saft
488=TCP/UDP gss-http
489=TCP/UDP nest-protocol
490=TCP/UDP micom-pfs
491=TCP/UDP go-login
492=TCP/UDP Transport Independent Convergence for FNA
493=TCP/UDP Transport Independent Convergence for FNA
494=TCP/UDP POV-Ray
495=TCP/UDP intecourier
496=TCP/UDP PIM-RP-DISC
497=TCP/UDP dantz
498=TCP/UDP siam
499=TCP/UDP ISO ILL Protocol
500=TCP/UDP isakmp
501=TCP/UDP STMF
502=TCP/UDP asa-appl-proto
503=TCP/UDP Intrinsa
504=TCP/UDP citadel
505=TCP/UDP mailbox-lm
506=TCP/UDP ohimsrv
507=TCP/UDP crs
508=TCP/UDP xvttp
509=TCP/UDP snare
510=TCP/UDP FirstClass Protocol
511=TCP/UDP mynet-as
512=TCP/UDP remote process execution (authentication performed using
passwords and UNIX login names), Comsat, Biff (used by mail system to
notify users of new mail received; currently receives messages only from
processes on the same machine)
513=TCP login (remote login a la telnet;automatic authentication
performed based on priviledged port numbers and distributed data bases
which identify "authentication domains")
513=UDP who (maintains data bases showing who's logged in to machines
on a local net and the load average of the machine)
514=TCP shell(cmd like exec, but automatic authentication is
performed as for login server)
514=UDP syslog
515=TCP/UDP printer spooler
516=TCP/UDP videotex
517=TCP/UDP talk(like tenex link, but across machine - unfortunately,
doesn't use link protocol (this is actually just a rendezvous port from
which a TCP connection is established))
518=TCP/UDP ntalk
519=TCP/UDP unixtime
520=TCP/UDP extended file name server, router(local routing process
(on site); uses variant of Xerox NS routing information protocol)
521=TCP/UDP ripng
522=TCP/UDP ULP
523=TCP IBM-DB2
524=TCP/UDP NCP
525=TCP/UDP timeserver
526=TCP/UDP newdate
527=TCP/UDP Stock IXChange
528=TCP/UDP Customer IXChange
529=TCP/TCP IRC-SERV
530=TCP/UDP rpc
531=TCP/UDP chat
532=TCP/UDP readnews
533=TCP/UDP for emergency broadcasts
534=TCP/UDP MegaMedia Admin
535=TCP/UDP iiop
536=TCP/UDP opalis-rdv
537=TCP/UDP Networked Media Streaming Protocol
538=TCP/UDP gdomap
539=TCP/UDP Apertus Technologies Load Determination
540=TCP/UDP uucpd
541=TCP/UDP uucp-rlogin
542=TCP/UDP commerce
543=TCP/UDP klogin
544=TCP/UDP krcmd
545=TCP/UDP appleqtcsrvr
546=TCP/UDP DHCPv6 Client
547=TCP/UDP DHCPv6 Server
548=TCP/UDP AFP over TCP
549=TCP/UDP IDFP
550=TCP/UDP new-who
551=TCP/UDP cybercash
552=TCP/UDP deviceshare
553=TCP/UDP pirp
554=TCP/UDP Real Time Stream Control Protocol
555=TCP/UDP dsf
556=TCP/UDP rfs server
557=TCP/UDP openvms-sysipc
558=TCP/UDP SDNSKMP
559=TCP/UDP TEEDTAP
560=TCP/UDP rmonitord
561=TCP/UDP monitor
562=TCP/UDP chcmd
563=TCP/UDP nntp protocol over TLS=SSL (was snntp)
564=TCP/UDP plan 9 file service
565=TCP/UDP whoami
566=TCP/UDP streettalk
567=TCP/UDP banyan-rpc
568=TCP/UDP microsoft shuttle
569=TCP/UDP microsoft rome
570=TCP/UDP demon
571=TCP/UDP udemon
572=TCP/UDP sonar
573=TCP/UDP banyan-vip
574=TCP/UDP FTP Software Agent System
575=TCP/UDP VEMMI
576=TCP/UDP ipcd
577=TCP/UDP vnas
578=TCP/UDP ipdd
579=TCP/UDP decbsrv
580=TCP/UDP SNTP HEARTBEAT
581=TCP/UDP Bundle Discovery Protocol
582=TCP/UDP SCC Security
583=TCP/UDP Philips Video-Conferencing
584=TCP/UDP Key Server
585=TCP/UDP IMAP4+SSL (Use 993 instead - Use of 585 is not
recommended)
586=TCP/UDP Password Change
587=TCP/UDP Submission
588=TCP/UDP CAL
589=TCP/UDP EyeLink
590=TCP/UDP TNS CML
591=TCP/UDP FMPRO4 - HTTP
592=TCP/UDP Eudora Set
600=TCP/UDP Sun IPC server
606=TCP/UDP Cray Unified Resource Manager
607=TCP/UDP nqs
608=TCP/UDP Sender-Initiated=Unsolicited File Transfer
609=TCP/UDP npmp-trap
610=TCP/UDP npmp-local
611=TCP/UDP npmp-gui
612=TCP/UDP HMMP Indication
613=TCP/UDP HMMP Operation
614=TCP/UDP SSLshell
615=TCP/UDP Internet Configuration Manager
616=TCP/UDP SCO System Administration Server
617=TCP/UDP SCO Desktop Administration Server
618=TCP/UDP DEI-ICDA
619=TCP/UDP Digital EVM
620=TCP/UDP SCO WebServer Manager
621=TCP/UDP ESCP
633=TCP/UDP Service Status update (Sterling Software)
634=TCP/UDP ginad
635=TCP/UDP RLZ DBase
636=TCP/UDP ldap protocol over TLS=SSL (was sldap)
637=TCP/UDP lanserver
666=TCP/UDP doom Id Software
667=TCP/UDP campaign contribution disclosures - SDR Technologies
668=TCP/UDP MeComm
669=TCP/UDP MeRegister
670=TCP/UDP VACDSM-SWS
671=TCP/UDP VACDSM-APP
672=TCP/UDP VPPS-QUA
673=TCP/UDP CIMPLEX
674=TCP/UDP ACAP
675=TCP/UDP DCTP
704=TCP/UDP errlog copy=server daemon
705=TCP/UDP AgentX
709=TCP/UDP Entrust Key Management Service Handler
710=TCP/UDP Entrust Administration Service Handler
729=TCP/UDP IBM NetView DM=6000 Server=Client
730=TCP/UDP IBM NetView DM=6000 send=TCP
731=TCP/UDP IBM NetView DM=6000 receive=TCP
741=TCP/UDP netGW
742=TCP/UDP Network based Rev. Cont. Sys.
744=TCP/UDP Flexible License Manager
747=TCP/UDP Fujitsu Device Control
748=TCP/UDP Russell Info Sci Calendar Manager
749=TCP/UDP kerberos administration
750=UDP kerberos version iv
886=TCP/UDP ICL coNETion locate server
887=TCP/UDP ICL coNETion server info
888=TCP/UDP AccessBuilder
900=TCP/UDP OMG Initial Refs
911=TCP xact-backup
989=TCP/UDP ftp protocol, data, over TLS=SSL
990=TCP/UDP ftp protocol, control, over TLS=SSL
991=TCP/UDP Netnews Administration System
992=TCP/UDP telnet protocol over TLS=SSL
993=TCP/UDP imap4 protocol over TLS=SSL
994=TCP/UDP irc protocol over TLS=SSL
995=TCP/UDP pop3 protocol over TLS=SSL (was spop3)
1025=TCP/UDP network blackjack, ICQ
1027=TCP ICQ
1080=TCP/UDP Socks, Wingate
1155=TCP/UDP Network File Access
1212=TCP/UDP lupa
1433=TCP/UDP Microsoft-SQL-Server
1434=TCP/UDP Microsoft-SQL-Monitor
1451=TCP/UDP IBM Information Management
1512=TCP/UDP Wins (Microsoft's Windows Internet Name Service)
1547=TCP/UDP laplink
1559=TCP/UDP web2host
1735=TCP/UDP PrivateChat
1745=TCP/UDP remote-winsock
1789=TCP/UDP hello
1801=TCP/UDP Microsoft Message Que
1986=TCP/UDP cisco license management
1987=TCP/UDP cisco RSRB Priority 1 port
1988=TCP/UDP cisco RSRB Priority 2 port
1989=TCP/UDP cisco RSRB Priority 3 port
1990=TCP/UDP cisco STUN Priority 1 port
1991=TCP/UDP cisco STUN Priority 2 port
1992=TCP/UDP cisco STUN Priority 3 port
1992=TCP/UDP IPsendmsg
1993=TCP/UDP cisco SNMP TCP port
1994=TCP/UDP cisco serial tunnel port
1995=TCP/UDP cisco perf port
1996=TCP/UDP cisco Remote SRB port
1997=TCP/UDP cisco Gateway Discovery Protocol
1998=TCP/UDP cisco X.25 service (XOT)
1999=TCP/UDP cisco identification port
2049=TCP/UDP Network File System - Sun Microsystems
2080=TCP Wingate 3.0
2784=TCP/UDP world wide web - development
3264=TCP/UDP cc:mail=lotus
3268=TCP/UDP Microsoft Global Catalog
3269=TCP/UDP Microsoft Global Catalog with LDAP=SSL
3270=TCP/UDP Verismart
5003=TCP/UDP Claris FileMaker Pro
5631=TCP/UDP pcANYWHEREdata
8010=TCP Wingate 3.0
5632=TCP/UDP pcANYWHEREstat
26000=TCP quake

[Trojans]
21=Back Construction,Blade Runner, Doly Trojan, Fore, FTP trojan,
Invisible FTP, Larva, WebEx, WinCrash
23=Tiny Telnet Server(= TTS)
25=Ajan,Shtrilitz Stealth, Terminator, WinPC, WinSpy, Kuang2 0.17A-0.30,
Antigen, Email Password Sender, Haebu Coceda(=Naebi), Happy 99, Kuang2,
ProMail trojan, Tapiras
31=Agent 31, Hackers Paradise, Masters Paradise
41=DeepThroat
58=DMSetup
59=DMSetup, RingZero
79=Firehotcker
80=Executor
99=Hidden Port
110=ProMail trojan
113=Kazimas
119=Happy 99
121=JammerKillah
421=TCP Wrappers
456=Hackers Paradise
531=Rasmin
555=Ini-Killer, NeTAdmin, Phase Zero, Stealth Spy
666=Attack FTP, Satanz Backdoor,Back Construction, Cain & Abel, ServeU,
Shadow Phyre
911=Dark Shadow
999=DeepThroat,WinSatan
1001=Silencer, WebEx
1010=Doly Trojan
1011=Doly Trojan
1012=Doly Trojan
1015=Doly Trojan
1024=NetSpy
1042=Bla
1045=Rasmin
1090=Xtreme
1095=Rat
1097=Rat
1098=Rat
1099=Rat
1170=Psyber Stream Server
1170=Voice, Streaming Audio trojan, Psyber Stream Server
1234=Ultors Trojan
1243=BackDoor-G, SubSeven,SubSeven Apocalypse
1245=VooDoo Doll
1269=Mavericks Matrix
1349=BO DLL
1492=FTP99CMP
1509=Psyber Streaming Server
1600=Shivka-Burka
1807=SpySender
1981=Shockrave
1999=BackDoor 1.00-1.03, TransScout
2000=TransScout
2001=TransScout
2001=Trojan Cow
2002=TransScout
2003=TransScout
2004=TransScout
2005=TransScout
2023=Ripper
2115=Bugs
2140=Deep Throat
2140=The Invasor
2155=Illusion Mailer
2283=HVL Rat5
2565=Striker
2583=WinCrash
2600=Digital RootBeer
2801=Phineas Phucker
2989=RAT(UDP)
3024=WinCrash
3128=RingZero
3129=Masters Paradise
3150=Deep Throat, The Invasor
3700=Portal of Doom
3791=Eclypse
3801=Eclypse(UDP)
4092=WinCrash
4321=BoBo
4567=File Nail
4590=ICQTrojan
5000=Bubbel, Back Door Setup, Sockets de Troie
5001=Back Door Setup, Sockets de Troie
5011=One of the Last Trojans (OOTLT)
5031=NetMetro
5321=Firehotcker
5400=Blade Runner, Back Construction
5401=Blade Runner, Back Construction
5402=Blade Runner, Back Construction
5550=Xtcp
5512=Illusion Mailer
5555=ServeMe
5556=BO Facil
5557=BO Facil
5569=Robo-Hack
5742=WinCrash
6400=The Thing
6669=Vampyre
6670=DeepThroat
6711=SubSeven
6771=DeepThroat
6776=BackDoor-G, SubSeven
6912=Shit Heep
6939=Indoctrination
6969=GateCrasher
6969=Priority, IRC 3
6970=GateCrasher
7000=Remote Grab, Kazimas
7300=NetMonitor
7301=NetMonitor
7306=NetMonitor
7307=NetMonitor
7308=NetMonitor
7789=Back Door Setup, ICKiller
8080=RingZero
9400=InCommand
9872=Portal of Doom
9873=Portal of Doom
9874=Portal of Doom
9875=Portal of Doom
9876=Cyber Attacker
9878=TransScout
9989=iNi-Killer
10067=Portal of Doom
10101=BrainSpy
10167=Portal of Doom
10520=Acid Shivers
10607=Coma
11000=Senna Spy
11223=Progenic trojan
12076=Gjamer
12223=Hack?9 KeyLogger
12345=GabanBus, NetBus, Pie Bill Gates, X-bill
12346=GabanBus, NetBus, X-bill
12361=Whack-a-mole
12362=Whack-a-mole
12631=WhackJob
13000=Senna Spy
16969=Priority
17300=Kuang2 The Virus
20000=Millennium
20001=Millennium
20034=NetBus 2 Pro
21544=GirlFriend
20203=Logged
22222=Prosiak
23456=Evil FTP, Ugly FTP, Whack Job
23476=Donald Dick
23477=Donald Dick
26274=Delta Source
29891=The Unexplained
30029=AOL Trojan
30100=NetSphere 1.27a, NetSphere 1.31
30101=NetSphere 1.31, NetSphere 1.27a
30102=NetSphere 1.27a, NetSphere 1.31
30103=NetSphere 1.31
30303=Sockets de Troie
30999=Kuang2
31336=Bo Whack
31337=Baron Night, BO client, BO2, Bo Facil, BackFire, Back Orifice,DeepBO
31338=NetSpy DK
31338=Back Orifice, DeepBO
31339=NetSpy DK
31666=BOWhack
31785=Hack Attack
31787=Hack Attack
31789=Hack Attack
31791=Hack Attack
33911=Spirit 2001a
33333=Prosiak
34324=BigGluck, TN
40412=The Spy
40421=Agent 40421, Masters Paradise
40422=Masters Paradise
40423=Masters Paradise
40426=Masters Paradise
47262=Delta Source
50505=Sockets de Troie
50766=Fore, Schwindler
53001=Remote Windows Shutdown
54320=Back Orifice 2000
54321=School Bus .69-1.11, Back Orifice 2000(UDP)
60000=Deep Throat
61466=Telecommando
65000=Devil

▒▒▒ 쉘 다루기 ▒▒▒
리눅스는 쉘프롬프트 상태에서 필요한 명령어를 실행할수 있습니다.
자 그럼 자신의 시스템에 적합한 최적화된 쉘을 구축해보겠습니다...

도스를 예로 들어보겠다. 도스를 처음 사용할때 가장 중요한 파일은 command.com 이다.
즉 모든 명령어는 command.com을 거쳐야만 실행이 된다.
리눅스에서 command.com 역할을 하는것이 바로 쉘이다.
그럼 이 쉘의 종류부터 알아보자

▶ 쉘의종류
Bourn shell
유닉스의 기본적인 쉘이며 구조적 문제를 해결할수 있는 문법언어를 내부적으로 갖춘 매우
강력한 쉘이다. 또한 뛰어난 입출력 제어기능을 가지고 있다.

C shell
많은 사용자를 확보하고 있는 쉘로서 스크립트 언어가 C와 비슷하여 C shell이라 불린다.

BASH(Bourne Again Shell)
요즘 리눅스에서 기본적으로 체택되며 기본쉘의 장점만 수용하고있다.

▶ 자신이 사용하고 있는 쉘 확인
확인방법 : #echo $SHELL
여기서 $SHELL은 환경변수이다. 환경변수 앞에서는 반드시 '$' 표시가 붙는다는 사실을 기억하자

▶ 자신이 사용하고 있는 쉘 변경 
변경방법 : #chsh
Changing shell for forwhom
Password:
New shell[/bin/bash] : /bin/csh
Shell changed

▶ Bash 설정파일(.bashrc .bash_profile)
각 사용자 디렉토리에 존재하며 쉘이 작동할때 자동으로 실행된다.
PATH경로 라이브러리 경로 프롬프트 모양등 여러가지 환경이 들어가 있다.

.bash_profil
PATH=$PATH:$HOME/bin
BASE_ENV=$HOME/.bashrc
USERNAME=""
export USERNAME BASE_ENV PATH

.bashrc
alias cp='cp -i'
alias mv='mv -i'
alais rm ='rm -i'
PATH=$PATH:/usr/local/bin 요 뒤에 추가가능

위에서 환경변수에 대해 언급한바가 있다. 내친김에 변수 만드는 방법도 알아보도록 하자

▶ 지역변수 : 사용자가 임으로 만들어 사용 새로운 쉘 시작시 유효하지 않다.
만드는 방법
#Linuxer=Phper
#echo $Linuxer 출력결과는 예상대로 Phper 이 된다.

▶ 환경변수 : 쉘내에서 가장 중요한 변수로 프로그램이나 사용자환경에 대한 정보가 저장된다.
#export Accel // 변수추가
#unset Accel //변수삭제

▶ 프롬프트 바꾸기
--바꾸는 방법
#$echo $PS1
$PS1="[\u@\h\d\t\W]$"

프롬프트에 달수 있는 기타 옵션들에 대해서 알아보자
\d 요일/달/날짜 형식의 날짜표시
\e ASCII의 excape 문자
\h 첫번째 ','까지의 hostname
\n 새로운 줄(바꾸기)
\t 24시간으로 현재시간
\T 12시간으로 현재시간
\u 현재사용자의 username
\w 현재 작업 디렉토리
\W 현재 작업 디렉토리의 basename
\! 현재 명령어의 history 번호
\# 현재 명령어의 command 번호
\\ backslash

▶ Alias 지정
alias cp='cp-i'
alias ls='ls -F --show-control-chars --color=auto'

[TIP] 리다이렉션...
명령을 실행했을때 실행결과를 나중에도 확인할수 있게 파일에 저장하는 기능이다.
#명령어 > 파일명 (실행결과가 새로운 파일에 저장)
#명령어 >> 파일명 (실행결과가 기존의 파일에 추가되어 저장)

'Server' 카테고리의 다른 글

쉘에서 PATH 보이기  (0) 2017.01.06
Telnet, Ssh 특정 계정 접속 못하게 하기  (0) 2017.01.06
DISK Quota 설정하기  (0) 2017.01.06
httpd.conf  (0) 2017.01.06
/etc/alias 사용법  (0) 2017.01.06

CPU정보 : cat /proc/cpu
디바이스정보 : cat /proc/devices
사용중인 파일 시스템 : cat /proc/filesystems
인터럽트(IRQ) : cat /proc/interrupts
메모리 : cat /proc/meminfo
작동중인 모듈확인 : cat /proc/modules 또는 lsmod
마운트정보 : cat /proc/mounts
파티션정보 : cat /proc/partitions
PCI정보 : cat /proc/pci
스왑정보 : cat /proc/swaps
커널버전,호스트정보,커널컴파일일자 등 : cat /proc/version

'Tip' 카테고리의 다른 글

mysql backup  (0) 2017.01.06
host 커맨드를 이용해 특정 도메인의 메일서버 알아내기  (0) 2017.01.06
mutt 메일 보내기  (0) 2017.01.06
TCP 연결수 확인 스크립트  (0) 2017.01.06
nslookup  (0) 2017.01.06
▒▒▒ 쿼타설정 ▒▒▒

1. 우선 커널에 quota설정이 되어있는지 확인해야합니다.
make xconfig 혹은 make menuconfig 실행하셔서 FileSystem으로 들어가시면 quota라는 항목이 있습니다.
이부분이 체크되어있어야 합니다. 체크가 되어있지 않으면 체크하시고 컴파일하셔요..

2. 부팅할때마다 적용을 시키기 위해 /etc/fstab 파일을 다음과같이 설정합니다.
지금부터는 쿼타설정할 파티션이 /dev/hda7 레이블은 /home 이라고 간주하겠습니다.
etc/fstab파일을 열어서 /home 이 있는 라인을 다음과같이 수정합니다.

/home /home ext2 defaults,usrquota,usrgroup 1 1

이렇게 설정한후 저장하고 나오세요

3. 쿼타적용할 디렉토리에 두개의 파일을 생성합니다.
#> touch /home/aquota.{user,group} <-- 요렇게 하시면 두개의 파일이 생성됩니다^^

4. 생성한 파일의 소유권을 수정합니다.
#> chmod 600 /home/aquota.*

5. 해당파일시스템 마운트 리로드..
#> mount -o remount /home

6. 다음과같이 디스크체크를 합니다.
#> quotacheck -auvg <-- 이과정에서 혹시 머라고머라고 이상한 거 나오면 그냥 무시하세요

7. 이제마지막 부분.. 
#> quotaon /home

이제 재부팅하시면 끝입니다


'Server' 카테고리의 다른 글

Telnet, Ssh 특정 계정 접속 못하게 하기  (0) 2017.01.06
쉘다루기/쉘의 종류  (0) 2017.01.06
httpd.conf  (0) 2017.01.06
/etc/alias 사용법  (0) 2017.01.06
FTP Command  (0) 2017.01.06

-------------------------------------------------------------------------------
◎ Apache 웹서버 환경설정


현재 아파치가 설치되어 있는 곳의 conf라는 디렉토리를 보면 httpd.conf라는 파일이 있슴다.
일단 이 파일을 vi편집기로 열어놓세요 아파치웹서버의 환경설정은 이 파일안에서 다함다.
그럼 순서대로 나열하고 중요한부분은 해석하고 사용법을 알아보겠슴다.

ServerType -standalone : 요청이 들어오기전 항상 응답할 준비가 되어있음 (대부분 사용, 빠름)
-inet : 요청이 들어오면 응답 (속도 떨어짐) 장점 : 메모리 적게사용

PidFile /var/run/httpd.pid : 아파치웹서버 PS id 정보가 여기에 저장

ResourceCondig conf/srm.conf : #으로 주석처리

AccessConfig conf/access.conf : #으로 주석처리

Timeout 300 : 요청이 들어왔을 때 300초까지 응답해줌 변경시에는 숫자만 바꿔주면 됨다

KeepAliv On : 홈페이지 접속한 상태를 계속 유지하면서 빠른시간내에 메뉴를 클릭(15초 횟수:100번) 

MaxKeepAliveRequests 100

KeepAliveTimeout 15

MinSpareServers 6 : 첨 실행되는 PS 개수 10개 줄어드는거 최소 6개 가장많이 늘어나는거 64 (메모리땜시 설정)

MaxSpareServers 64

StartServers 10

MaxClients 150 // 클라이언트 접속할수 있는 수

MaxRequestsPerChild // 자식PS가 100번정도 요청을 받고 사용하고 다시 삭제(ps 오랫동안 존재하면 보안상 문제)

Listen 3000 // 일반사용자 사용가능

User nobody // 권한을 주지않음으로 시스템 보안 유지

Group nobody

ServerAdmin root@localhost // 웹서버 문제가 생겼을 때 정보를 받을수 있는 멜주소 

ServerName new.host.name // DNS에 등록되어있는 호스트명 /etc/host 에 등록된 호스트명
IP Address 입력해도 됨

DocumentRoot // 홈페이지 내용 저장 디렉토리

UserDir public_html // 유저 디렉토리

DirectoryIndex // 시작페이지 파일이름 지정(순서대로)

AccessFileName .htaccess // 웹상에서 인증화면 뜸.. 

ThpesConfig /etc/mime.types // 아파치에서 적용하는 확장자 정의(ex 쇽웨이브정의)

HostNameLookups off // on 으로 되어있으면 클라이언트의 네임서버까지 추적(시간이 오래걸림)

ErrorLog // 아파치 에러메세지 디렉토리

LogLevel warn // warn(중간)뿐만아니라 debug notice 등등 있음 (로그메세지의 양)

ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/" //별칭정의

AddType application/x-httpd-php3 .php3 // 확장자 추가

AddHandler cgi-script .cgi // cgi 사용시 이부분의 주석을 풀어주어야 함

AddType text/html .shtml

AddType text/html .htm

버추얼호스트 설정방법(중요)

하나의 서버에 여러게 도메인 사용이 가능하다

NameVirtualHost 202.31.150.148 // 아파치웹서버에 아이피 어드레스


ServerAdmin webmaster@abc.co.kr //문제발생시 받을수 있는 주소
DocumentRoot /home/abc // 밑의 서버네임 홈페이지가 존재하는 위치
ServerName www.abc.co.kr
ErrorLog logs/abc.co.kr-error_log // 위 도메인에 문제가 생겼을 경우 저장되는 경위 (보통 안만듬) 
/var/log 에 있음
CustomLog logs/abc.co.kr-access_log common // 이것도 보통 안만듬


사용예.. (300~400개 정도 사용가능함)

NameVirtualHost 211.171.255.78



..





..



◎ 아파치 환경설정 두 번째..

//루트 디렉토리 이하의 디렉토리 환경설정 ex) 

Options All : MultiView를 제외한 모든부분 허가
ExecCGI : cgi 허가
FollowSymLinks : 심볼링크로 설정된 파일에 대해 원본을 찾아서 제공
Includes : server side include 서버가 이전하면 홈페이지의 주소를 변경하여야함 그러나 주소가 
입력된 파일하나만 수정해서 바꾸지 않아도 됨
IncludesNOEXEC : ssi를 지원하면서 cgi만 거부(보안상)
Indexes : 디렉토리 보여줌
None : 모든 옵션 불허
MultiViews : 홈페이지안에 영국어 한국어 중국어 세계의 언어가 있으면 특정 옵션을 사용하여 
나라마다 언어를 자동으로 제공, 이미지 이름이 동일한 경우 선택적으로 보여줌
SymLinksIfOwnerMatch : 심볼링크로 설정된 파일에 대해서 원본과 링크파일의 소유자가 
동일한 경우 원본만 보여줌

AllowOverride All : 모든 것을 허가
AuthConfig : 사용자 인증과 관련된 명령을 디렉토리 단위로 사용가능케 함 
FileInfo : 파일정보 표시 가능
Limit : 사용자의 접근을 제한할수 있음 아이피나 도메인을 이용해서..
None : 접근제한기능을 사용하지 않음
Options : 접근제한설정을 사용가능하게 지시


간단히 예를 들자면...

Options ExecCGI Indexes 
AllowOverride None

이렇게 하면 /home이라는 디렉토리에 CGI를 적용하고 웹상에서 index파일이 없을 때 해당디렉토리의 
파일이나 디렉토리를 보여주고 접근제한기능을 사용하지 않는다는 뜻이죠..

SSI (SERVER SIDE INCLUDE)를 설정해보자

ssi를 설치하면 웹상에서 텔넷명령을 실행할 수 있다. ex) 
- 단점 : 아파치 웹서버에 부담을 줄수 있다


Options All ExecCGIInclude IncludesNOEXEC Indexes


SSI를 설정하고나서 문서를 작성할 때 
// 파일의 수정일 표기
// 파일의 크기 표기
// food 파일내용을 삽입

이제 SSI 서비스를 받아보자

(SSI : 웹상에서 어떤 일을 첨부할수 있고 웹상에서 텔넷명령 실행가능)


최종수정일: 
파일의크기: 







ssi를 서비스하면 웹상에서 위와같은 서비스를 받을수 있다
그렇나 아파치 웹서버에 부담을 준당..

인증서비스(htaccess) 
다음은 home 디렉토리에 인증서비스를 하는 요령이다.


Options Includes ExecCGI // cgi 사용가능
AllowOverride ALL //.htaccess를 사용가능케 함


이제 public_html 밑에 인증서비스를 한다

.htaccess라는 파일 생성
Options All 
AuthType "Basic" // 인증방식을 베이직으로
AuthName "Administrator" // 인증화면 사용주체
AuthUserFile /home/wawacampus/public_html/.htpasswd //계정하과 비번이 있는 파일


require valid-user // AuthUserfile에 있는 사용자만 접근가능
allow from IP주소 (그사람은 허용함)
deny from all (모든 사람은 거부하고 특정한 IP주소만 허용)


.htpasswd 파일 생성방법

#> htpasswd -c .htpasswd person

두 번째부터는 -c 옵션은 사용하지 않음


혹시 틀린부분이 있다거나 하시면 아낌없는 질타를 바랍니다. - Leopit

'Server' 카테고리의 다른 글

쉘다루기/쉘의 종류  (0) 2017.01.06
DISK Quota 설정하기  (0) 2017.01.06
/etc/alias 사용법  (0) 2017.01.06
FTP Command  (0) 2017.01.06
sendmail.cf  (0) 2017.01.06

:: 쉘 프로그래밍 문법 ::

- 학습목표 
매개변수와 쉘 변수를 이해하고 활용한다. 
연산자들을 이해하고 활용한다. 
조건문과 반복문을 이해한다 

1. 매개변수(파라메타) 
쉘 변수에는 세가지 유형이 있으며 이는 매개 변수로 알려져 있다. 그종류는 키워드 
매개 변수, 위치 매개변수, 특수 쉘 매개변수 등이다. 
1) 키워드 매개 변수 
키워드 매개변수명은 알파벳 문자나 _ (밑줄) 문자로 시작 되어야 한다. 그리고 그 
다음에는 알파벳이나 밑줄문자의 임의의 숫자가 올 수 있다. 그 값들은 다음과 같이 
기록함으로써 키워드 매개변수에 배정된다. 
변수=값 변수=값 ... 
2) 위치 매개 변수 
쉘 프로그램이 실행될 때마다 프로그램명은 변수 $0에 배정되고, 명령 라인에 타이
프된 인수들은 변수 $1, $2, $3 ...에 배정된다. 위치 매개변수들 set 명령으로 값
을 배정 받을 수 있다. $9 이상의 매개변수는 ${nn}으로 표현할 수 있다. 
Examples: 
$ cat hi 
print hello $1 
$ hi there world 
hello there 

3) 특수 매개 변수 
$# 프로그램에 전달된 인수들의 수 또는 set문 실행에 의해 세트된 매개 변수들
의 수 
$* $1, $2, $3 ...과 같은 모든 위치 매개변수들을 집단적으로 참조 
$@ $* 과 같이 위치 매개변수들을 집단적으로 참조 
$0 실행중인 프로그램 이름 
$$ 실행중인 프로그램의 프로세스 번호 
$! 실행을 위해 백그라운드로 보내진 마지막 프로그램의 프로세스 번호 
$? 백그라운드로 실행되지 않은 마지막 명령의 종료 값 
$- 현재 설정된 옵션값 


2. 매개변수 치환 
가장 간단한 경우로서, 매개변수의 값은 달러표시($)를 가진 매개 변수를 선행함으
로써 접근될 수 있다. 매개 변수의 치환은 파일명 치환전에, 그리고 명령 라인이 
인수로 분리되기 전에 쉘에 의해 수행된다. 
$parameter 또는 ${parameter} 
매개변수의 값을 치환한다. 
$ print $PWD ${11} $$ 
/usr/dgk arg11 1234 
$ file=test_f 
$ cp $file ${file}x 

$ ls -x 
$ test_f test_fx 
${parameter:-value} 
parameter의 값이 null이 아닌 경우 그값을 치환하고, null인 경우에는 
value값만을 치환. 
$ EDITOR=/bin/ed 
$ echo ${EDITOR:-/bin/vi} 
/bin/ed 
$ EDITOR= 
$ echo ${EDITOR:-/bin/vi} 
/bin/vi 
$ echo $EDITOR 

${parameter:=value} 
parameter값이 null이 아닌경우 그값을 치환하고, null인 경우 value값을 
치환하고 그것을 parameter에 대입. 
$ unset x 
$ typeset -u x 
$ print ${x=abc} 
ABC 

$ BOOKS= 
$ : ${BOOKS:=$HOME/books} 
$ echo $BOOKS 
/usr/kys/books 
$ : ${BOOKS:=tester} 
$ echo $BOOKS 
/usr/kys/books 

${parameter:?value} 
parameter 값이 null이 아닐경우 그값을 치환. 그렇지 않으면 value을 표준 
에러에 기록하고 빠져나옴. 
만약 value가 생략되어 있으면 parameter와 메서지를 출력프로그램에서 요구
되는 변수들이 모두 설정되었는지 또는 무효가 아닌지의 여부를 알아보기위
해 쉽게 사용하여 체크할수 있다. 
$ print ${foo?} 
ksh: foo: parameter null or not set 
$ BOOKS= 
$ : ${BOOKS:?\"No BOOKS file\"} 
No BOOKS file 
${parameter:+value} 
parameter가 null이 아닐 경우 value를 치환.  null인 경우 아무것도 치환
하지 않음. 
$ set a b c 
$ print ${3+foobar} 
foobar 

$ toption= 
$ echo options: ${toption:+ \"T mode\"} 
options: 

${#parameter} 
매개변수의 길이를 치환 
$ HOME=/home/klog 
$ print ${#HOME} 
10 

${#array[*]} , ${#array[@]} 
배열의 요소들의 수를 치환 
$ unset x 
$ x[1]=5 x[3]=8 x[6]=abc x[12]= 
$ print ${#x[*]} 

${parameter#pattern} 
매개변수의 값을 치환하며 이때 pattern과 부합되는 왼쪽 부분은 제거된다. 
쉘 화일명 치환문자들(*,?,[..],@,!)을 사용할 수 있다. 
$ cd $HOME/src/cmd 
$ print ${PWD#$HOME/} 
src/cmd 

${parameter##pattern} 
가장 큰 pattern과 부합되는 왼쪽 부분은 제거된다. 
$ x=/one/two/three 
$ print ${x##*/} 
three 

${parameter%pattern} 
pattern과 부합되는 오른쪽 작은 부분이 제거된다. 
$ x=file.c 
$ print ${x%.c}.o 
file.o 

${parameter%%pattern} 
pattern과 부합되는 오른쪽 큰 부분이 제거된다. 
$ x=foo/fun/bar 
$ print ${x%%/*} 
foo 


3. 파일 입출력 
1) 파일 열고 닫기 
exec 명령을 아무런 아규먼터 없이 사용하여 현재 환경에서 파일을 열고 닫을 수 
있으며, I/O 방향재설정 방법을 사용하며 이때 파일디스크립터 값은 0-9까지 사용
할 수 있다. 
Examples: 
exec 3< foo  <- foo을 파일디스크립터3 으로 지정하여 읽기위해 
open 
$ exec 3<&- <- 파일디스크립터3 을 close 



4. 다큐먼트, 반환값 
1) 다큐먼트 
문자 #로 단어가 시작된다면 셀은 라인의 나머지를 주석으로 취급하고 ksh이 실행하
지 않는다 
Examples: 
$ cat samp_1 
# This is comment line 
# pwd 
ls -x # display listing of the directory 
$ samp_1 
samp_1 samp_2 samp_3 samp_4 samp_5 

2) 반환값 
각각의 명령어는 반환값을 가진다. 명령어의 반환값은 조건 명령이나 순환명령에서 
많이 사용된다. 반환값은 0에서부터 255의 값을 가진다. 
반환값 0 은 정상적인 종료인 경우의 값이며 조건이나 순환명령어에서 TRUE로 사용
되는 값이다. 그 이외의 모든 다른 값은 FALSE로 취급된다. 
반환값 1은 명령의 실행이 실패한 경우 129-160은 명령어가 신호를 수신하고 종료한 
경우에 발생되는 값이다. 
ksh에서는 $? 변수에 가장 최근에 종료된 명령어의 반환값이 저장된다. 

5. 병렬 프로세스 기능 
병렬프로세스 기능은 동시에 실행되면서 상호간에 통신하고 동기화를 하는 프로세스
간의 상호 작용 기능을 제공한다. 병렬프로세스의 시작은 명령어 라인의 끝에 \"|&\" 
을 추가하므로서 구현할 수 있다. 
기본적으로 병렬 프로세스의 표준입력은 그 프로세스의 부모 프로세스의 표준 출력
과 연결되며, 병렬 프로세스의 표준 출력은 그 프로세스의 부모 프로세스의 표준 입
력과 연결된다. 
cat /etc/passwd |& 
while true 
do 
if [ -z \"$FLINE\" ] 
then 
exit 0 
else 
read -p FLINE 
fi 
echo $FLINE 
done 




6. 쉘 스크립트 실행 방법 
1) . Script ( Dot Command ) 
도트 명령은 지시된 파일이 마치 그 파일로 부터의 라인들이 그지점에서 타이프 된
 것처럼 쉘에 의해 판독되고 실행되도록 한다. file은 실행하도록 하는 것이 아니
라 다만 읽기 쉽게 한다. 
Examples: 
$ cat > .profile 
export PS1=\'$PWD> \' 
export PATH=$PATH:$HOME 
^d 
$ . .profile 
/home/edu01> _ 
-> 변경된 .profile의 내용을 로그아웃, 로그인 순서를 그치지 않고 현재 쉘
에서 실행하여 사용자 환경을 지정할 수 있다. 
2) ksh script_filename 
서브쉘을 생성하여 그 쉘이 스크립트를 읽어서 실행하도록 한다. 이 경우 
script_filename 파일이 실행 퍼미션이 지정되어 있지 않아도 된다. 
Examples: 
$ cat > test_sub_shell 
echo \"test execution of shell script file \" 
echo $PWD 
^d 

$ ls -l test_sub_shell 
-rw-r--r-- 1 edu01 other 54 Jan 29 10:00 test_sub_shell 
$ ksh test_sub_shell 
test execution of shell script file 
/home/edu01 

3) chmod +x script_filename 
script 파일에 실행 퍼미션을 설정하여 실행한다. 
Examples: 
$ chmod +x test_sub_shell 
$ ls -l test_sub_shell 
-rwxr-xr-x 1 edu01 other 54 Jan 29 10:00 test_sub_shell 
$ test_sub_shell 
ksh: No such file or directory 
-> 현재 디렉토리 경로가 PATH에 설정되어 있지 않다. 
$ export PATH=$PATH:. 
-> 현재 디렉토리를 PATH 환경변수에 설정한다 
$ test_sub_shell 
test execution of shell script file 
/home/edu01 

7. 파일과 문자 테스트 연산자 
test 명령이나 [ ... ] 연산 결과 TRUE로 반환 받는 조건이다. 
1) 파일연산자 
-r file 프로세스에 의해 판독가능한 파일 
-w file 프로세스에 의해 기록 가능한 파일 
-x file 프로세스에 의해 실행 가능한 파일 
-f file 보통 파일 
-d file 디렉토리 
-c file 문자 특수 파일 
-b 2file 블록 특수 파일 
-p file 파이프 파일 
-u file 파일이 SUID(집합사용자 확인) 비트세트를 가진 경우 
-g file 파일이 SGID(집합그룹확인) 비트 세트를 가진 경우 
-k file sticky bit이 설정된 파일 
-s file 비제로 길이를 가진 파일 
-L file 심볼릭 링크 파일 
-O file 파일의 주인이 effective user id인 경우 
-G file 파일의 그룹이 effective user id인 경우 
-S file socket 형태의 특수 파일인 경우 
-t file file descriptor가 어떤 단말기와 연관된 개방된 파일 디스크립
터인 경우 


2) 스트링 연산자 
string 스트링이 널이 아닌 경우 
-n string 스트링이 널이 아닌경우 
-z string 스트링이 널인 경우 
string1 = string2 string1 과 string2 가 같은 경우 
string1 != string2 string1 과 string2 가 같지 않은 경우 
3) 정수 비교 연산자 
int1 -eq int2 int1 이 int2 와 같은 경우 
int1 -ge int2 int1 이 int2 와 같거나 그보다 큰경우 
int1 -gt int2 int1 이 int2 보다 큰경우 
int1 -le int2 int1 이 int2 와 같거나 작은 경우 
int1 -lt int2 int1 이 int2 보다 작은 경우 
int1 -ne int2 int1 이 int2 와 같지 않은 경우 
4) 부울 연산자 
!expr expr이 FALSE 
expr1 -a expr2 expr1이 TRUE, 그리고 expr2가 TRUE 
expr1 -o expr2 expr1이 TRUE 혹은 expr2가 TRUE 


Examples: 
$ test -x file -a ! -d file 
-> file이 실행 가능하고 디렉토리가 아닌 경우 
$ test \"x$1\" = xabc 
-> $1이 abc인 경우 
$ [ \"x$1\" = xabc ] 
-> $1이 abc인 경우 
$ test ! \\( -w file -o -x file \\) 
-> file 이 쓸 수 있거나 실행 가능한 파일이 아닌경우 
$ [ ! ( -w file || -x file ) ] 
-> file 이 쓸 수 있거나 실행가능한 파일이 아닌경우 



8. 내장된 정수 연산 
1) 정수 연산 
일반적인 대부분의 수식 연산을 ksh 에서는 지원하고 있다. 다음은 ksh에서 지원 되
는 연산자들이다. 
- 단항 - 
~ NOT 
! 논리부정 
* , / , % 곱하기, 나누기, 나머지 
+ , - 더하기, 빼기 
<< , >> 왼쪽 시프트, 오른쪽 시프트 
< , > , <= , >= 비교 
== , != 동등, 비동등 
& 그리고 
^ 배타적 또는 
| 또는 
&& 논리적 and 
|| 논리적 or 
= 배정 



2) let 명령 
Korn쉘은 expr 명령없이 정수 연산을 수행하기 위한 메커니즘을 제공하고 있는데 그
것이 let 명령이다. let은 쉘에 내장되어 있기 때문에 계산을 위한 새로운 과정을 
만들거나 찾거나 프로그램을 로딩할 필요도 없다. let의 형식은 
$ i=100 
$ let i = i + 1 
$ echo $i 
101 

$ let \' i = i + 1 \' \'j = j + 10\' 
개별적인 식들이 중간에 공백으로 가지고 있다면 인용부호로 묶어서 사용해야하며 
이것은 수식 쉘로부터의 *, &, <, > 와 같은 문자들이 가지는 특별한 의미를 제거하
는 부가적 효과를 가진다. 
$ let \'i = ( i + 10 ) * j \' 
둥근 괄호를 이용하여 수식을 그룹화할 수도 있다. 

3) (( expression )) 
(( expression )) 은 let \"expression\" 과 같은 의미이다. 쌍으로된 둥근 괄호를 이
용하여 let에 대한 대안적 형식을 취할수 있다. 
$ (( i = i * 5 )) 
$ (( i >= 0 && i <= 100 )) 
4) expr 
expr 명령을 사용하여 수식 계산을 실행한 후에 변수에 그 값을 지정한다. 
Examples: 
$ aa=10 
$ aa=`expr $aa + 10` 
$ echo $aa 
20 

5) integer variable 
수식계산에 사용되는 변수를 정수로 선언하여 일반적인 형태의 수식계산 방식을 ksh
에서 사용하도록 지정한다. 하지만 이렇데 지정된 변수는 반드시 정수 값만 가질수 
있다. 
Examples: 
$ integer aa 
$ aa=100 
$ aa=aa+1 
$ echo $aa 
101 
$ aa=\"test a integer variable\" 
ksh: aa: bad number 


9. 배열 
Korn쉘은 제한된 배열 능력을 제공한다. 배열은 1차원으로 512요소를 가지며, 배열
의 인덱싱은 0에서 시작하고 511까지 지정할수 있다. 
배열의 요소는 한쌍의 각괄호( [ ] ) 안에 넣어진 정수값으로 된 색인첨자와 함께 
호출되는 것으로 자신이 요구하는 만큼 요소에 값을 할당하여 사용한다. 
$ arr[0]=hello 
$ arr[1]=\"some text\" 
$ arr[2]=/home/dgk/memos 
배열로부터 값을 불러오는 방법은 배열의 이름과 각 괄호안에 원하는 요소의 번호를 
넣고 그것을 ${ }에 넣어 사용한다. 
$ echo ${arr[0]} 
hello 
$ echo ${arr[2]} 
/home/dgk/memos 
$ echo $arr 
hello 
-> 첨자가 없는 경우 요소 0이 이용된다. 
$ echo $arr[1] 
hello[1] 
-> { }을 사용하지 않고 출력한 경우 예상치 않은 결과 값을 출력한다. 

$ echo ${arr[*]} 
hello some text /home/dgk/memos 
-> 배열에 들어있는 모든 내용을 불러 온다 

$ echo ${#arr[*]} 

-> 배열 arr에 있는 요소들의 갯수. 이때 수는 실제 요소의 갯수가 아니고 
가장 큰 첨자 + 1 한 값이 출력된다. 이 값은 배열안에 다음 요소를 저장하
기 위한 첨자로 사용된다. 

$ arr[10]=foo 
$ echo ${arr[*]} 
hello some text /home/dgk/memos foo 
$ echo ${#arr[*]} 
11 
-> 사용자가 정수 명령을 배열명에 선언해 줌으로써 Korn쉘에게 정수 배열을 
선언하게 한다. 
$ integer arr 
$ arr[0]=100 
$ arr[1]=50 
$ (( arr[2] = arr[0] + arr[1] )) 
$ echo ${arr[2]} 
150 



배열구성요약 
${array[i]} 요소 i 값을 치환 
$array 첫번째 요소 array[0]값을 치환 
${array[*]} 모든 요소값을 치환 
${#array[*]} 요소들의 수를 치환 
array[i]=value value을 array[i]로 치환 

10. 함수 정의 
ksh에서의 function명령은 name ( ) { ....; } 형식으로 선언된다. 기능을 분류하거
나 순환적으로 일어나는 일들을 하나의 변수 형식으로 지정하여 불러 사용할 수 있
도록 한다. 
function identifier 

compound-list 

identifier( ) 

compound-list 

Examples: 등록된 사용자수를 세는 nu 라는 함수를 정의한다. 
$ function nu 
> { 
> who | wc -l 
> } 
$ nu 
13 


$ cat funt1 
function check_yesno 

typeset -l reply 
while true 
do 
read -r \"reply?$1? \" || return 1 
case $reply in 
y|yes} return 0;; 
n|no) return 1;; 
*) print \'please answer y or n\';; 
esac 
done 

while check_yesno \'Do you want to continue? \' 
do 
foobar 
done 

일반적으로 정의된 함수는 서브쉘에 보내지지 않는다. 하지만 typeset이라는 명령을 
사용하여 함수정의를 export 시킬 수 있다. 
$ typeset -fx funtion-name 
-> function-name을 주지 않으면 엑스포트된 함수들의 명단을 출력한다. 

$ typeset -f -> 정의된 함수의 리스트를 출력한다. 
funcrion nu 

who | wc -l 


함수정의 삭제 
함수정의를 삭제하기 위해 -f 옵션을 가진 unset명령을 사용한다. 
$ type nu 
nu is a function 
$ unset -f nu 
$ type nu 
ksh: nu: not found 



11. 변수의 속성 정의 
매개변수의 종류는 앞에서 키워드 매개변수, 위치매개변수, 특수매개변수로 나누어 
설명하였다. 이런 각각의 변수는 하나 또는 그 이상의 특성을 정의할 수 있으며 
typeset 이라는 명령어를 사용하여 변수의 특성을 on/off 하거나 설정되어 있는 내
용을 리스트할 수 있다. 
Command: typeset [-options] vasriable 
Options: 
-u Uppercase 소문자를 대문자로 변환한다. -l 옵션은 자동적으로 off된다 
$ typeset -u x=abc 
$ print $x 
ABC 
-l Lowercase 대문자를 소문자로 변환한다. -u 옵션은 자동적으로 off 된다. 
$ typeset -l x=ABC 
$ print $x 
abc 
-i or -ibase Integer 정수 변수로 정의된다. base는 수의 진법 정의 
$ integer x=6 
$ typeset -i8 y=x+x 
$ print $y 
8#14 
-L or -Lwidth Left-justified 앞에오는 공란들을 왼편 자리 맞춤시키고 
스트립 시킴. width가 비제로로 정의 되어 있으면 자리수를 width로 설정한다. -R옵
션은 자동적으로 off된다. 
$ typeset -L3 x=abcd y 
$ y=3 
print \"$y-$x\" 
3 -abc 
-LZ or -LZwidth Strip Leading Zero 앞에오는 제로들은 스트립되고 왼
편으로 자리 맞춤한다. 
$ typeset -LZ3 x=abcd y 
$ y=03 
print \"$y-$x\" 
3 -abc 
-R or -Rwidth Right-justified 오른편 자리 맞춤시키고 스트립시킴. 
width가 비제로인 경우 자리수를 width 로 설정. 
$ typeset -R3 x=abcd y 
$ y=3 
$ print \"$y-$x\" 
3-bcd 

-Z or -Zwidth Zero-filled 
-RZ or -RZwidth Zero-filled 
-Z만 설정된 경우 -L 옵션이 굛 되어있지 않다면 오른편로 자리 맞춤 시키고 스트립
시킨다. width가 비제로 값이면 자리수를 width로 설정한다. 만약 처음의 비공란 문
자가 숫자이면 0으로 채워진다. 
$ typeset -Z3 x=abcd y 
$ y=3 
$ print \"$y-$x\" 
003-bcd 
-r Read-only 변수가 읽기전용으로 설정되어 있다면 그 변수값을 변경하려 하
면 에러 메세지를 출력하고 변경이 불가능하다. 
$ typeset -r foo=bar 
$ foo=nobar 
ksh: foo: is read only 
$ unset foo 
ksh: foo: is read only 
-x Exported 모든 변수에 값이 설정되면 자동적으로 현재 환경에 값을 배당
한다. 
$ typeset -x foo=bar 
$ export foo=bar 

12. 패턴 
[ . . . ] 부호 문자들을 정의하여 그중 어느 하나의 문자와 일치하는 패턴 정
의할수 있다. \' - \' 부호를 사용하여 범위를지정 할수 있다. \' ! \' 부호를 사용하여 
역으로 매치 시킬수도 있다. 
$ ls 
chap1 chap10 chap11 chap2 chap3 chapa chapb chapc 
$ ls chap[123] 
chap1 chap2 chap3 
$ ls chap[12][01] 
chap10 chap11 
$ ls chap[!2-4] 
chap1 
$ ls chap[1-3] 
chap1 chap2 chap3 
? 문자 어떤 문자이든 상관없이 한 문자와 매치 된다 
$ ls chap? 
chap1 chap2 chap3 
chapa chapb chapc 
* 문자 어떤 문자든 0번 또는 그 이상과 매치 
$ ls chap* 
-> chap 으로 시작되는 모든 스트링 
$ ls x*y 
-> x로 시작하고 y로 끝나는 모든 스트링 
?(pattern[|pattern]...) 패턴 0번 또는 한번 발생되는 pattern과 매치 
$ ls para?([345]|99)1 
-> para1, para31, para41, para51, para991 과 매치 
*(pattern[|pattern]...) 패턴 0번 이상 발생되는 pattern과 매치 
$ ls para*([0-9]) 
-> para, para뒤에 어떤 숫자라도 붙어 있는 스트링과 매치 
+(pattern[|pattern]...) 패턴 1번 이상 발생되는 pattern과 매치 
$ ls para+([0-9]) 
-> para뒤에 숫자가 붙어 있는 모든 스트링과 매치 
@(pattern[|pattern]...) 패턴 정확히 한번 발생되는 pattern과 매치 
$ ls para@(chute|graph) 
-> parachute, paragraph 과 매치 
!(pattern[|pattern]...) 패턴 pattern에 정의된것을 제외한 모든것과 
매치 
$ ls para!(*.[0-9]) 
-> para로 시작하고 .숫자로 끝나지 않는 모든 스트링과 매치 


13. 조건문 
[ [ test-expression ] ] 또는 [ test-expression ] 기호 
test 명령을 대신하여 테스트하는데 사용할 수 있다. 
$ [ [ foo > bar && $PWD -ef . ] ] && print foobar 
foobar 
1) if . . . then . . . else . . . fi 
if 는 일반적으로 3가지 패턴으로 사용할수있다. 
형식1: 
if test -f $1 
then 
echo $1 exist 
fi 
형식2: 
if test -f $1 
then 
echo $1 exist 
else 
echo $1 does not exist 
fi 

형식3: 
if (( score < 65 ) 
then grade=F 
elif (( score < 80 ) 
then grade=C 
elif (( score < 90 ) 
then grade=B 
else grade=A 
fi 
Examples: 
if print \'Please enter your name: \\c\' ; read -r name 
then if mail \"$name\" < mailfile 
then : 
else print \"Cannot mail to $name\" 
fi 
else print \'end-of file\'
exit 1 
fi 
2) case 
case word in 
[ ( ) pattern [ | pattern.... ] ... ] compound-list ;; ] 
. . . . 
esac 
word와 매치되는 pattern을 찾아서 해당되는 compound-list를 실행한다. 
Examples: 
$ cat case1 
case $x in 
-d*) dflag=1;; 
-e*) eflag=1;; 
\"\") print -r -u2 - \"x must have a value\";; 
*) if test ! -r \"$x\" 
then print -r - \"$x: no read permission\" 
fi ;; 
esac 
$ cat case2 
read -r line 
case $line in 
[$1]*) : ;; # ok 
*) print \'Line must begin with one of: $1\" 
exit 1;; 
esac 



14. 반복 
1) for 문 
for identifier [ in word .... ] 
do compound-list 
done 
word의 개수만큼 do와 done사이의 명령어들을 반복적으로 실행한다 
Examples: 
$ cat for1 
for i in apple banana mango 
do 
echo \"$i\\t\" 
done 

$ for1 
apple banana mango 

$ cat for2 
for i in * ## 현재 디렉토리의 모든 파일 
do 
if test -d \"$i\" 
then print -r - \"$i\" 
fi 
done 
다음 예제는 트럼프 놀이를 쉘 스크립트로 작성한 것이다. 한번 키를 칠 때 
마다 카드 번호를 한 장씩 출력해준다. 총 7장의 카드를 출력해준다. 
$ cat for3 
integer i=0 ; typeset -u card 
echo \"Gamer I : 이름을 입력하시오: \\c\" 
read gamer01 
echo \"Gamer II : 이름을 입력하시오: \\c\" 
read gamer02 
echo \"카드를 섞고 있습니다\" 
for suit in clubs diamonds hearts spades 
do 
for n in ace 2 3 4 5 6 7 8 9 10 jack queen king 
do 
card[i]=\"$n of $suit\" 
i=i+1 
done 
done 
echo \"게임을 시작하겠습니다\" 
for gamer in $gamer01 $gamer02 
do 
echo \"$gamer: \\c\" 
i=0 
while [ $i -le 7 ] 
do 
read 
echo \" ${card[RANDOM%52]} \\t\" 
i=i+1 
done 
echo 
done 

2) select문 
select identifier [ in word .... ] 
do compound-list 
done 
나열하는 word를 화면에 메뉴 형태로 표준 출력 화면으로 출력해 주고, 표준 입력으
로부터 무한 반복으로 값을 입력 받는다. 값을 입력 받기위해 프롬프트를 출력해 주
는데 디폴트 프롬프트는 \'?\' 이다. 프롬프트는 환경변수 PS3에서 지정할 수 있다. 
Examples: 
$ cat select1 
PS3=\'Please enter a number: \' 
select i in add delete modify list exit 
do 
case $i in 
add|modify) 
print Select editing file 
break;; 
delete) 
print Select removing job;; 
list) 
print Select display job;; 
exit) 
print Select exit job 
print Good-bye 
exit ;; 
*) print \'Invalid number\';; 
esac 
done 
$ select1 
1) add 
2) delete 
3) modify 
4) list 
5) exit 
Please enter a number:_ 



3) while문 
while test문 또는 명령어 실행 
do compound-list 
done 
while 반복문은 test문 또는 명령의 실행결과가 참(true)인 동안 루틴을 반복적으로 
수행한다. 
Examples: 
$ cat while1 
while read -r line 
do 
print -r - \"$line\" 
done 

$ cat while2 
while [ $line -le $maxline ] 
do 
echo >> $BUFFER 
lines=`expr $lines + 1` 
done 
$ cat while3 
while true 
do 
read name 
if [ ${name}x = x ] 
then 
break 
fi 
done 
4) until 문 
until test문 또는 명령어 실행 
do compound-list 
done 
test문 또는 명령 실행결과가 거짓(false)인 경우 루틴을 반복 수행한다. 
Examples: 
$ cat until1 
until cc -c foo.c 
do vi foo.c 
done 
$ cat until2 
until who | grep klog >/dev/null 
do 
echo waiting 5 seconds 
sleep 5 
done 
echo klog has logged on 
$ cat until3 
until false 
do 
read name 
if [ ${name}x = x ] 
then 
break 
fi 
done 

15. 흐름 제어 
1) break [ n ] 
이 명령의 실행은 가장 안쪽 n개의 for, while, until 루프의 실행이 즉시 종료시키
고 빠져 나오며 루프다음의 명령을 계속 실행한다. 
Examples: 

$ cat break1 
for i in * 
do
for j in foo bar bam 
do 
if test \"$j\" = \"$i\" 
then 
break 2 
fi 
done 
done 


2) continue [ n ] 
for, while, until 루프안에서의 이명령의 실행은 continue 다음에 오는 임의의 명
령들이 skip 되도록 한다. 
Examples: 
$ cat continue1 
for i in * 
do 
if test -d \"$i\" 
then continue 
fi 
print -r - \"$i is not a directory\" 
done 



16. 쉘 프로그래밍 응용 
1) vi with backup the file 
vi 편집기를 호출하여 파일을 편집하여 저장하기전 이전의 파일을 filename.bak 파
일에 저장하도록 하는 쉘 스크립트를 작성한다. 
$ cat vvi 
#!/usr/bin/ksh 

if [ $# -le 0 ] 
then 
vi 
exit 
fi 
cp $1 ${1}.tmp 
vi $1 
if cmp -s $1 ${1}.tmp 
then 
rm ${1}.tmp 
else 
cp ${1}.tmp ${1}.bak 
rm ${1}.tmp 
fi 

2) newcat 
출력용 필터인 newcat 을 생성한다. 내용의 각 라인에 라인번호를 붙여서 23개 라인
씩 출력한다. 
$ cat newcat 
#!/usr/bin/ksh 
if [ $# -lt 1 ] 
then 
echo \"Usage Error: newcat filenames... \" ; exit 
fi 
for filename in $* 
do 
integer count=1 
integer page=1 
exec < $filename 
echo \"Filename : $filename\\t\\tPage: $page \" 
while read line 
do 
if [ $count -eq 22 ] 
then 
echo \"--More-- \" 
read 
echo \"\\f\" 
page=page+1 
echo \"Filename : $filename\\t\\tPage: $page \" 
fi 
echo \"$count\\t$line\" 
count=count+1 
done 
done 
3) exec_check 실행 점검 스크립트 
program_01 이라는 프로그램을 실행하는 스크립트를 작성한다. 이미 이 프로그램이 
실행중이라면 30초간 대기하면서 이미 실행중인 프로그램의 실행종료를 대기한다. 
대기중 실행종료가 확인되면 프로그램을 실행시킨다. 30초가 초과되면 타임아웃으로 
인식하고 메시지를 출력하고 스크립트를 종료한다. 
$ cat exec_check 
#!/usr/bin/ksh 

trap \"echo off > ex_check_file; echo \"인터럽트 수신/종료\"; exit 200\" 2 
if [ $# -ne 1 ] 
then 
echo \"실행할 프로그램명이 입력되지 않았습니다\" 
echo \"USAGE: exec_check program-name\" 
exit 
fi 
if [ ! -f ex_check_file ] 
then 
echo off > ex_check_file 
fi 
integer count=0 
while read e_flag < ex_check_file; [ e_flag = \'on\' ] 
do 
echo \"$1 프로그램이 실행중입니다. 프로그램 종료 대기중...\" 
sleep 5 
count=count+1 
if [ $count -eq 6 ] 
then 
echo \"TIME OUT....\" 
echo \"$1 프로그램이 아직 실행중입니다\" 
echo \"잠시후 다시 실행하여 주십시오\" 
echo \"스크립트를 종료합니다\" 
exit 
fi 
done 
echo on > ex_check_file 
$1 
echo off > ex_check_file 
echo \"$1 프로그램 실행을 정상 종료합니다\" 


4) 웹으로 finger을 실행하게 하는 CGI 프로그램 
#!/bin/sh !/usr/bin/ksh 
FINGER=/usr/bin/finger 
echo Content-type: text/html 
echo 
if [ -x $FINGER ] 
then 
if [ $# -eq 0 ] 
then 
cat << EOM 



Finger Gateway



This is a gateway to \"finger\". Type a user@host combination in your 
browser\'s search dialog.


EOM 
else 
echo \\

 
$FINGER \"$*\"
echo \\


fi 
else 
echo Cannot find finger on this system. 
fi 
cat << EOM 

EOM

'Coding' 카테고리의 다른 글

색을 랜덤하게 뽑아서 출력합니다.  (0) 2017.01.07
php predefined variables  (0) 2017.01.06
주민번호 생성원리  (0) 2017.01.06
CGI Setting  (0) 2017.01.06
Vi(m) 사용시 ^M 없애기  (0) 2017.01.06

1. 이 파일의 기능은?
일종의 메일계정을 다른 메일주소나 다른 계정으로 매칭하는 기능을 합니다.
이런 면에서 /etc/mail/virtusertable 과 거의 비슷하지만 약간 성격이 다릅니다.
/etc/mail/virtusertable은 가상 도메인이 많이 있을 경우에 일반적으로 사용하는 방법입니다.

2. 작성할 형식은?
<계정 또는 가상유저>: <포워딩할 계정또는 가상유저 또는 다른 메일주소 리스트>

계정 :
/etc/passwd 파일에 등록된 유저를 말합니다. 즉 시스템 유저와 일반 유저를 포함한
계정입니다.

가상유저 :
/etc/passwd 파일에 존재하지 않은 유저로 시스템 관리자가 정하는 유저를 말합니다.

포워딩할 계정 :
/etc/passwd 파일에 존재하는 시스템 유저가 아닌 일반 유저의 계정

다른 메일주소 :
localhost에 등록되어 있지 않은 다른 메일서버(기계)의 메일주소


3. 리스트 작성은?
컴마(,)로 구분하여 계정또는 메일주소를 나열

4. love: love,hanym6@hanmail.net의 의미는 ?
localhost의 love의 계정으로 오는 메일은 localhost 계정인 love과
hanym@hanmail.net의 메일주소로 가게됩니다.
따라서 양쪽에 똑같은 메일이 존재하게 됩니다.

5. 가상유저 생성은?
예를 들어, /etc/passwd 파일에 aaa, bbb, ccc 라는 계정이 없고, love 라는 계정은
존재한다면,

aaa: love
bbb: love
ccc: love

으로 설정하여 aaa@localhost, bbb@localhost, 모두 love 계정으로 3개의 메일이
가게됩니다.

따라서 event, help, admin 등과 같은 계정은 가상유저로 설정하는게 좋겠죠..

6. 센드메일을 재시작해야 하나요?
센드메일을 재시작할 필요는 없습니다.

# newaliases 명령을 내려주면 됩니다.

7. root로 오는 메일은?

root: admin

으로 설정하면 root로 오는 메일을 admin이라는 유저가 받을 수 있습니다.

자료출처 : 리눅스채널'

'Server' 카테고리의 다른 글

DISK Quota 설정하기  (0) 2017.01.06
httpd.conf  (0) 2017.01.06
FTP Command  (0) 2017.01.06
sendmail.cf  (0) 2017.01.06
네임서버 구축  (0) 2017.01.06

.

- ftp 명령어

ascii : 전송모드를 ASCII모드로 설정한다.(ascii또는 as) 

binary : 전송모드를 BINARY모드로 설정한다.( binary또는 bi) 

bell : 명령어 완료시에 벨소리를 나게한다.(bell) 

bye : ftp접속을 종료하고 빠져나간다.(bye) 

cd : remote시스템의 디렉토리를 변경한다.(cd 디렉토리명) 

cdup : remote시스템에서 한단계 상위디렉토리로 이동한다.(cdup) 

chmod : remote시스템의 파일퍼미션을 변경한다.(chmod 755 index.html) 

close : ftp접속을 종료한다. (close) 

delete : remote시스템의 파일을 삭제한다.(delete index.old) 

dir : remote시스템의 디렉토리 내용을 디스플레이한다.(dir) 

disconnect : ftp접속을 종료한다.(disconnect) 

exit : ftp접속을 종료하고 빠져나간다.(exit) 

get : 지정된 파일하나를 가져온다.(get index.html) 

hash : 파일전송 도중에 "#"표시를 하여 전송중임을 나타낸다.(hash) 

help : ftp명령어 도움말을 볼 수 있다.(help또는 help 명령어) 

lcd : local시스템의 디렉토리를 변경한다.(lcd 디렉토리명) 

ls : remote시스템의 디렉토리 내용을 디스플레이한다. (ls 또는 ls -l) 

mdelete : 여러개의 파일을 한꺼번에 지울 때 사용한다.( mdelete *.old) 

mget : 여러개의 파일을 한꺼번에 가져오려할 때 사용한다. ( mget *.gz) 

mput : 한꺼번에 여러개의 파일을 remote시스템에 올린다.(mput *.html) 

open : ftp접속을 시도한다.(open 168.126.72.51또는 open ftp.kornet.net) 

prompt : 파일전송시에 확인과정을 거친다. on/off 토글 (prompt) 

put : 하나의 파일을 remote시스템에 올린다.(put index.html) 

pwd : remote시스템의 현재 작업디렉토리를 표시한다.(pwd) 

quit : ftp접속을 종료하고 빠져나간다.(quit) 

rstatus : remote시스템의 상황(version, 어디서, 접속ID등)을 표시한다.(rstatus) 

rename : remote시스템의 파일명을 바꾼다.(remote 현재파일명 바꿀파일명) 

rmdir : remote시스템의 디렉토리을 삭제한다.(rmdir 디렉토리명) 

size :remote시스템에 있는 파일의 크기를 byte단위로 표시한다.(size index.html) 

status : 현재 연결된 ftp세션모드에 대한 설정을 보여준다.(status) 

type : 전송모드를 설정한다.(type 또는 type ascii 또는 type binary) 

'Server' 카테고리의 다른 글

httpd.conf  (0) 2017.01.06
/etc/alias 사용법  (0) 2017.01.06
sendmail.cf  (0) 2017.01.06
네임서버 구축  (0) 2017.01.06
samba 설정으로 윈도우에서 리눅스 접근하기  (0) 2017.01.06

+ Recent posts