반응형
회사 업무를 진행하면서 업무에 필요한 다양한 스크립트를 작성한다. IPAM system에서도 조회가 가능한 정보이지만 나는 Python 스크립트에서 shell을 실행하여 원하는 정보를 처리하는 방법을 택했다.
nslookup IP address (e.g - nslookup 10.0.0.1) 형태의 명령어를 통해서 조회하는 IP와 연계된 DNS 레코드를 추출했다.
검색을 통해서 가장 처음 알게된 방법은 os.system('nslookup ' + '10.0.0.1')
하지만 위와같이 코드를 수행하게 되면 해당 프로세스를 실행하여 출력해줄 뿐 output을 capture 할 수 없다.
이 문제를 해결하려면 subprocess를 이용하면 가능하다.
import subprocess
import openpyxl
fileName = r"P:\Cutover_Prep1.xlsx"
def loadExcelFile(fileName):
wb = openpyxl.load_workbook(fileName)
ws = wb.active
ipList = list()
for i in range(2, ws.max_row + 1):
ipList.append(ws['G' + str(i)].value)
print('--- Data successfully loaded')
return ipList
def saveExcelFile(dnsList):
wb = openpyxl.load_workbook(fileName)
ws = wb.active
cellNumber = 2
for elem in dnsList:
ws['J' + str(cellNumber)] = elem
cellNumber += 1
wb.save(fileName)
wb.close()
print('--- Data successfully saved')
ipList = loadExcelFile(fileName)
dnsList = list()
for elem in ipList:
fd_popen = subprocess.Popen(f'nslookup {elem}', stdout=subprocess.PIPE).stdout
dnsList.append(fd_popen.read().strip().decode("utf-8").split("Name:")[1].split("Address:")[0].strip())
fd_popen.close()
saveExcelFile(dnsList)
반응형
'<개인공부> - IT > [Python]' 카테고리의 다른 글
Python (pass, continue, and break) (0) | 2021.07.20 |
---|---|
Day 9. PyQt5 (Dialogs) (0) | 2021.03.30 |
Day 8. PyQt5 (Actions, Toolbars, Menus) (0) | 2021.03.20 |
Day 7. PyQt5 (Layouts) (0) | 2021.03.19 |
Day 6. PyQt5 (QSpinBox, QSlider, QDial) (0) | 2021.03.18 |