[powershell] IP 주소 받아오기, 짝수 홀수 아이피 가르기

Get-WmiObject Win32_NetworkAdapterConfiguration -Namespace “root\CIMV2” | where{$_.IPEnabled -eq “True”}

하고 나서, ip만 뽑을땐?

(Get-WmiObject Win32_NetworkAdapterConfiguration -Namespace “root\CIMV2” | where{$_.IPEnabled -eq “True”}).ipaddress[0]

 

또는

 

(gwmi -query “Select IPAddress From Win32_NetworkAdapterConfiguration Where IPEnabled =  True” | Select-Object IPaddress).ipaddress[0]

 

이렇게 하면 IPv4 아이피를 딸 수 있다 .

그럼 이걸 octet 별로 쪼개려면 이렇게 해보자.

 

$iptest=(gwmi -query “Select IPAddress From Win32_NetworkAdapterConfiguration Where IPEnabled =  True” | Select-Object IPaddress).ipaddress[0]

$ipoctet=$iptest -split “\.”

 

Echo $ $ipoctet[3]

-split 로 “.” 으로 나누면, 이렇게 하면 ip주소가 ” . ” 을 기준으로 4등분 되며 각각 $ipoctet[0] ~ $ipoctet[3] 으로 저장된다.

 

여기서 그럼, IP 맨 마지막 숫자가 홀수인경우와 짝수인 경우를 별도의 실행을 시켜주는 방법을 생각해보자

 

if (($ipoctet[3] %= 2) -ne 1)

    {echo “jjaksu”}

else

    {echo “holsu”}

;

 

이런식으로 IP의 마지막 octet의 숫자를 2로 나눈 나머지 값을 1이 아닌 경우 짝수, 1인경우는 홀수 라고 볼 수 있겟다.

이 스타일을 이용하여, 짝수 서버군과 홀수 서버군을 서로 다른 스타일 군으로 관리 할 수 있도록 구성에 적용할 수 도 있다.

 

[linux] 다수 서버 호스트명 수정하기 – bash

자체적으로, ReserveDNS 를 운영하면서 질의 하면 더욱 좋겠지만 그렇지 못한 경우를 위해서 다음과 같이

호스트 파일을 일괄 수정한다.

 

 

Java 등에서 inetaddress.getbyname  또는

InetAddress[] ipAddress = DNSNameService.lookupAllHostAddr(“hostName”);

등을 사용하는 경우 호스트명을 통해서 아이피를 가져오게 됨

 

이럴때 일일히 서버에서 등록하지 말고 매니지먼트 서버에서 아래와 같이 쉘을 하나 만들어서 원격지 배쉬로 실행시켜서 적용하면 좋다.

 

쉘스크립트 작성..

#!/bin/bash

a=(`hostname`)

b=`ifconfig eth0 | grep 10.11 | cut -d ‘:’ -f2 | cut -d ‘ ‘ -f1`

echo -e “$b $a” >> /etc/hosts

 

이렇게 작성한 쉘을 아래와 같이 원격지에 뿌려줌. (remotehost.txt 에 대상이 되는 서버를 미리 등록해놓자~)

for i in $(cat remotehost.txt ); do ssh $i ‘/bin/bash -s’ < myname.sh  ;done

 

 

 

[python] django – web dev framework 기본 구성

Django Mysql로 설치

 

Pip install django

Pip install python-mysql

 

Django-admin startproject [프로젝트명]

 

Python manage.py help

 

먼저 mysql에 데이터베이스 셍성

생성된 프로젝트 settings.py 에 다음과 같이 데이터베이스를 mysql로 설정 (기본 sqlite3)

 

DATABASES = {

‘default’: {

‘ENGINE’: ‘django.db.backends.mysql’,

‘NAME’ : ‘HONGDB’,

‘USER’ : ‘사용자’,

‘PASSWORD’ : ‘비밀번호’,

‘HOST’ : ‘127.0.0.1’,

‘PORT’ : ‘3306’,

#’ENGINE’: ‘django.db.backends.sqlite3′,

#’NAME’: os.path.join(BASE_DIR, ‘db.sqlite3′),

}

}

 

Python manage.py migrate

디비 생성후

Python manage.py createsuperuser

슈퍼 유저 생성

 

프로젝트의 views.py 를 이용해서 해당 function을 이용하기 위해 import 를 해준다.

여기서 webapps는 나의 프로젝트명이고, views.py 는 그냥 내가 만들어준 function용 py다.

# sungho make views page

from webapps.views import index, sungho

 

Url 패턴 입력시 인덱스 및 특정 펑션 설정을 해준다.

urlpatterns = [

url(r’^admin/’, admin.site.urls),

url(r’^$’, index),  #add index

url(r’^sungho/’, sungho), #add sungho

]

 

Views.py

from django.http import HttpResponse

def index(request):

return HttpResponse(“Index Page”)

def sungho(request):

return HttpResponse(“Hello My Name is sungho”)

 

Django의 http를 이용해 response를 설정해준다.

위에서는 간단하게 스트링을 리턴하여, 화면에 출력하는 용도로 만들었음.

 

 

다음..

 

mysql> grant all privileges on sungho.* to ‘nic2hong’@’127.0.0.1′ identified by ’12Tjdgh#$’;

Query OK, 0 rows affected, 1 warning (0.01 sec)

 

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

 

 

 

[python] boto모듈을 이용해 s3 backup (upload)

from boto.s3.connection import S3Connection

# S3 account

AWS_ACCESS_KEY_ID = ‘엑세스키’

AWS_ACCESS_KEY_SECRET = ‘시크릿키’

# make connection

conn = S3Connection(AWS_ACCESS_KEY_ID, AWS_ACCESS_KEY_SECRET)

# backup target BUCKET

bucket_name = ‘버킷명’

bucket = conn.get_bucket(bucket_name)

# BACKUP DIR and target DIR

backup_dir =’/backup/로컬백업폴더’

target_dir = ‘버킷하위디렉터리명’

# TIME setting to target

import time

utime = time.strftime(‘%Y-%m-%d’)

dest_dir = target_dir+’/’+utime

# search FUNCTION DEF

import os.path, os

def find(inputdir):

return [os.path.join(path, file)

for (path, dirs, files) in os.walk(inputdir)

for file in files]

# Search

listfile=find(backup_dir)

# upload

from boto.s3.key import Key

for list in listfile:

#print(list)

uploadkey = dest_dir+list

print(‘upload files to ‘+bucket_name+’ bucket\n’+’dir = ‘+uploadkey+’\n’)

k = Key(bucket)

k.key = uploadkey

k.set_contents_from_filename(list)

print ‘upload FILES finish’

# END

[powershell] 프로세스 찾아 종료

 Get-WmiObject win32_process -computername gp425 | Select-Object name,handle,executablepath

이걸 응용해서 프로세스 동작시간 (creation DATE) 확인이 가능하다.

Get-WmiObject win32_process -computername mgw2 | Select-Object name, creationdate

위와 같이 입력하면 pg152 실행 경로 pid 등을 확인가능

원정대 서버만 골라끌때 쓴다.

  • 피파의 경우 원정대 센터 서버든, 일반 게임 센터든간에 프로세스명은 모두 ff2center.exe !
    • 게임 서버는 ff2game 이다.ㅋㅋ
  • 이럴땐 excutablepath 확인하여 (원정대 fellowship / 월드투어 worldtour ) 해당 PID 찾아서 해당 PID 골라서 죽여준다.

  • taskkill /s pg152 /f /PID 1111 /PID 2222 /PID 3333 등등~

Powershell 원격지 실행 about singing (remotesigned)

원격지실행명령어

 

  1. 스크립트서명방식에대한설명
    1. Get-help about signing

 

  1. 원격명령을통해 ps1 파일을실행하는방법

Set-ExecutionPolicy remotesigned

 

 

파라미터

 

Step 1 :파라미터 확인
Get-Help명령어로 기본
Parameter의 도움말을 제공받을 수 있습니다.

Get-Helpabout_CommonParameters

Step 2 : ErrorAction
SilentlyContinue인자를 이용해서 에러 발생해도 출력되지 않고 명령어를 계속 실행할 수 있습니다
.
Stop-Process13,23ErrorActionSilentlyContinue
Stop인자를 이용해서 에러 발생시 명령을 중단합니다.
Stop-Process13,23ErrorActionStop

Step 3 : ErrorVariable
ErrorVariable을 이용해서 에러 발생시 에러 내용을 변수에 저장할 수 있습니다
.
Stop-Process13,23ErrorVariableerrErrorActionSilentlyContinue
아래의 Script이용해서에러내용을일반평문이아닌클래스구조체형식으로정보를제공받을있습니다.
$err[0] | fl*Force
Count속성을 이용해서 에러 발생 개수를 확인할 수 있습니다.
$err.count

Step 4 : OutVariable
OutVariable파라미터를 이용해서 출력을 변수에 저장할 수 있습니다
.
Get-ProcessOutVariableoutput |out-null

Step 5 : Whatif
Whatif를 이용해서 명령어를 테스트할 수 있습니다
.
remove-itemsd.txtwhatif

PS C:\Users\hong.sungho\Desktop> Remove-Item tq.pcy -whatif

WhatIf: 대상 “C:\Users\hong.sungho\Desktop\tq.pcy”에서 “파일 제거” 작업을 수행합니다

powershell 의 get-wmiobject 를 이용해 process 정보를 검색해보자.

powershell 의 get-wmiobject 를 이용해 process 정보를 검색해보자.


 Get-WmiObject win32_process -computername 호스트명 | Select-Object name,handle,executablepath

 

이걸응용해서프로세스동작시간 (creation DATE)확인이가능하다.

Get-WmiObject win32_process -computername 호스트명 | Select-Object name, creationdate

 

위와같이입력하면 원격지 호스트의 실행경로 pid 등을확인가능

 

아래에서 excuteablepath 이나 기타 프로세스를 종료 시킬 필요가 있는 경우 아래와 같이 진행한다.
taskkill /s 호스트명  /f /PID 1111 /PID 2222 /PID 3333