import time
t=time.localtime()
print t
time.struct_time(tm_year=2012, tm_mon=11, tm_mday=15, tm_hour=9, tm_min=53, tm_sec=20, tm_wday=3, tm_yday=320,tm_isdst=0)
print t.tm_year
print t.tm_mon
print t.tm_mday
print t.tm_hour
print t.tm_min
print t.tm_sec

'PYTHON > CODE' 카테고리의 다른 글

[CODE] 간단한 파일 서버 만들기  (0) 2012.11.23
[CODE] 파이썬 윈도우 서비스 등록  (0) 2012.11.15
[CODE] 오늘날짜 얻어오기  (0) 2012.11.14
[CODE] MySQLdb select 예제  (0) 2012.11.01
[CODE] PYTHON SSH 접속 작업하기  (1) 2012.10.19

import datetime
s=datetime.datetime.now()
bk_date=s.strftime('%Y%m%d')

import MySQLdb


def db():
    sqldb=MySQLdb.connect(db='mydb',user='root',passwd='imsi00',host='localhost')
    mysql_cursor=sqldb.cursor()
    mysql_cursor.execute('select * from mydb.custom')
    print mysql_cursor.fetchmany(10)
    print mysql_cursor.fetchmany(10)
    print mysql_cursor.fetchmany(10)
    sqldb.close()

def main():
    db()

if __name__ == '__main__':
    main()

paramiko라는 python 모듈을 사용하시면

SSH를 이용하여 원하는 서버에 접속 후 명령어를 실행시켜 결과를 가져올 수 있습니다.

사용법 이전에 설치에 대해서 알아보면 일단 2가지 파일을 다운로드 받으셔야 합니다.

pycrypto, paramiko 다운로드 링크는 꼭 달아드리도록 하겠습니다.

파이썬 모듈의 기본적인 설치 방법은 아래와 같습니다. 설치파일의 압축을 풀고 해당 디렉토리에서

아래의 명령을 수행하시면 설치가 됩니다.

먼저 pycrypto, paramiko를 순서대로 설치하시면 됩니다.

python setup.py build
python setup.py install 

해당 모듈의 사용법은 아래와 같습니다.

from paramiko import SSHClient,AutoAddPolicy

client = SSHClient()
client.load_system_host_keys()

client.set_missing_host_key_policy(AutoAddPolicy()) 

client.connect('192.168.137.101', username='admin', password='admin')
stdin, stdout, stderr = client.exec_command('list')
                                                                               
for line in stdout:
    print '... ' + line.strip('\n')
                                                                             
client.close()

넷백업은 각 폴리시 별로 백업 대상디렉토리가 정해지는데

아래와 같은 코드를 사용하면 각 폴리시에서 어떤 폴더들이 백업대상 폴더로 세팅되었는지 알수 있다.

import commands

def get_policy_list():
    lines=commands.getoutput('bppllist').split('\n')
    return lines

def get_include_dir(policies):
    backup_target={}
    print policies
    for policy in policies:
        if policy != 'ORACLE_ARCHIVE':
            dirs=[]
            includes=commands.getoutput('bpplinclude %s -L'% policy).split('\n')
            for include in includes:
                dir=(include.split(':')[-1]).strip()
                dirs.append(dir)
            if( dirs.count('CATALOG_DRIVEN_BACKUP') == 0):
                backup_target[policy]=dirs
            else:
                pass
    for line in backup_target.keys():
        print line,backup_target[line]

policies=get_policy_list()
get_include_dir(policies)

이번엔 간단히 소켓 프로그래밍을 만들어 보겠습니다.

방법은 다른 OS들의 C라이브러리를 사용하는 것과 크게 다르지 않고 설정하는 부분도 대부분 동일한 형태입니다.

기본적으로 서버는 응답을 기다리고 응답이 오면 다시 해당 응답을 클라이언트로 전달하는 ECHO서버 예제입니다.

일단 Server쪽 먼저 만들어 보겠습니다. (소스는 python doc에서 인용하였습니다.)

# Echo server program
import socket

HOST = ''                   # Symbolic name meaning all available interfaces
PORT = 50007              # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
    data = conn.recv(1024)
    if not data: break
    conn.sendall(data)
conn.close()

크게 어렵지 않은 부분이라고 생각되어 집니다. 사실 몰라도 되죠 그냥 저렇게 써 주면 됩니다.

나중에 시간이 되면 라인 단위로 설명을 드리도록 하겠습니다.

다음 부분은 클라이언트 부분입니다.

# Echo client program
import socket

HOST = 'IP '                # The remote host
PORT = 50007              # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.sendall('Hello, world')
data = s.recv(1024)
s.close()
print 'Received', repr(data)

위의 IP부분에 서버의 IP를 입력해주면 바로 동작이 되는 것을 확인할 수 있습니다.

이상입니다. 결과는 소스를 바로 가져 가시면 확인이 가능합니다. 제가 확인을 해보았습니다.

import subprocess
cmd = 'ls -al'
subprocess.call(cmd,shell=True)


drwxrwxr-x 2 root games       4096 Jun 28 12:45 linux_x86_64
-rw-r--r-- 1 root root        5235 Sep 15 08:02 install.log.syslog
-rw-r--r-- 1 root root       60894 Sep 15 08:02 install.log
-rw------- 1 root root        2285 Sep 15 08:02 anaconda-ks.cfg
drwxr-xr-x 2 root root        4096 Sep 15 08:20 Desktop

import os

cmd = 'ls -al'

os.system(cmd) 


total 1571540
drwxr-x--- 26 root root        4096 Oct  4 01:22 .
drwxr-xr-x 33 root root        4096 Sep 20 01:17 ..
-rw-r--r--  1 root root  1462227520 Sep 17 01:45 ABR11A_ko-KR.exe
-rw-------  1 root root        2285 Sep 15 08:02 anaconda-ks.cfg
-rw-------  1 root root       16332 Sep 27 23:52 .bash_history
-rw-r--r--  1 root root          24 Jul 13  2006 .bash_logout
-rw-r--r--  1 root root         364 Sep 16 02:34 .bash_profile
-rw-r--r--  1 root root        1276 Sep 16 02:33 .bashrc
-rwxr-xr-x  1 root root          40 Oct  4 01:22 cmd.py

너무 간단한가요??

import socket

socket.gethostbyname(socket.getfqdn())

import commands

ETHER_NAME=0
HEADER=2

result=commands.getoutput('netstat -ni').split('\n')[HEADER:]
ether_name=[]
for line in result:
    ether=line.split()[ETHER_NAME]
    if ether != 'lo':
        ether_name.append(ether)
print ether_name


['eth0', 'eth1']

+ Recent posts