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

python manage.py inspectdb > models.py

 

'DJANGO' 카테고리의 다른 글

DJANGO #3. Python, Django 설치  (0) 2013.04.03
DJANGO #2. Tutorial 설명  (0) 2013.04.03
DJANGO #1. Django 정의 및 특징  (0) 2013.04.03
Tutorial Guide 만들어보자  (0) 2013.04.02
[DJANGO] 템플릿 활용 예제  (0) 2012.11.14

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()

ls -l / | awk '/^d/{print $NF}'

 

bpdbjobs -most_columns

이렇게 하면 실제로 bpdbjobs 명령을 직접 사용할 때보다 조금 빠른 듯한 느낌이다.

또한 bpdbjobs는 백업 수행 상태에 따라 컬럼수가 달라져 자동화하기 어려우나

해당 명령은 모든 결과의 컬럼수가 같고 ,로 구분되기 때문에 자동화에 유리하다.

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()

특정 디렉토리를 입력하면 하위디렉토리의 리스트를 나타내는 코드입니다.

예를 들어 디렉토리명에 '/'을 입력하면 root디렉토리 하위의 모든 디렉토리명을 리스트로 반환하고

'/root'를 입력하면 /root 밑의 모든 하위 디렉토리를 리스트로 반환합니다. 인용은 stackoverflow.com입니다

import os 

def listdir_fullpath(d):
   
return [os.path.join(d, f) for f in os.listdir(d)]

listdir_fullpath('/')

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

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

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를 입력해주면 바로 동작이 되는 것을 확인할 수 있습니다.

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

현재 백업 마스터에서 백업되어지는 백업 폴리시 전체 목록

bpplist  


bpplist [policy명] -L

결과에서 include : [파일시스템명]

의 형태로 출력됨

+ Recent posts