ㄴ Python

3월 17일 (파이썬 파일입출력, EVE환경 구성)

깜자왕 2022. 3. 17. 13:57
반응형

금일 키워드 : for 반복문, continue, while(break), 파일 입출력 (r,w,x,a,+), eve 환경 구성


구구단 세로버전

 


파이썬 (3월 16일 연장)

1. for 반복문

   1-1. 반복문 활용

   -> 요소 값을 아이템 변수로 할당해 응용이 가능하다

i, j 값에 리스트값을 집어넣어 더해주는 코드

   -> continue를 활용해 한 차례 반복을 건너뛸 수 있다

   -> continue 아래의 코드를 무시하고 바로 for문으로 넘어간다.

for문을 반복할 때 마다 cnt값이 증가하지만 i = e일때는 continue로 인해 cnt += 1을 생략하고 바로 맨 위 for문으로 올라간다. (그림 1-1)

 


연습문제

1. 위 (그림1-1)에서 조건문을 만족하는 count값과 만족하지 않는 count값을 따로 출력하세요


2. while 반복문

   2-1. while 반복문 : 프로그램의 실행을 반복할 수 있음. *무한루프에 빠지지 않도록 주의

   2-2. while 반복문 활용

num이 6이 되기 전까지 num -=1을 반복하다가 6을 만족하는 순간 if문으로 들어가 end 출력 후 break를 통해 while문이 종료

 

3. 리스트 내포

   3-1. 리스트를 만드는 반복문을 짧고 간결하게 만들어준다

   -> print([ i for i in range(5)]) -> [0,1,2,3,4]

   -> 조건문을 함께 사용할 수 있음 -> print([i for i in range(5) if i%2 ==0]) -> [0,2,4]

   -> 다만 반복문을 여러 개 사용하는 중첩문일 경우 가독성이 떨어져 오히려 불편할 수 있다.

 

4. 파일 입출력

   4-1. 순서 : open -> 읽기, 쓰기, 수정하기 -> close()

   * close()를 통해 닫아주어야만 자원 점유를 해제하고 불필요한 오류 발생을 막는다

 

   4-2. 파일 처리 모드 종류

   -> r, w, x, a, + 로 이루어져 있으며 아래 설명 참고

파일 처리 모드의 종류

 

   4-3. 파일 쓰기

   -> os라는 모듈을 활용해 현재 디렉토리 경로 확인 가능

현재 경로 확인

   -> 디렉토리 경로 없이 파일명만 적을 경우 지금 파이썬이 실행되는 경로에 파일 생성

a.txt 라는 파일을 쓰기모드로 생성 후 1234 입력. close()로 마무리
현재 디렉토리에 a.txt가 생성됨. 내용은 1234

*리눅스 터미널에서 특정 파일을 찾고자 하는 명령어 -> find / -name (파일이름.확장자)

ex) 바로 위에서 생성한 a.txt를 예로 하면 find / -name a.txt

 

   -> 특정 경로에 파일을 생성하고자 한다면 아래와 같이 실행

 

현재 디렉토리를 print(os.getcwd())로 확인 후 실행

 

   -> 값을 바꾸고자 한다면 덮어쓰면 된다. (a.txt의 1234를 5678로 변경)

5678로 변경 완료

 

   -> "a"를 이용하면 내용 뒤에 '추가' 가능

"w"가 아닌 "a"
5678 뒤에 1234가 추가된 것을 확인

 

   -> "x"를 이용하면 "w"와 기능은 똑같지만, 이미 파일이 있다면 덮어쓰기가 안 되고 오류난다.

a.txt는 이미 있는 파일이라서 오류가 난다.

 

   -> 여러 줄 적고자 한다면 """ """ 또는 \n을 이용한다.

\n으로 한 경우이다

 

 

   -> 리스트, 튜플에 있는 내용을 입력하는 방법 (writelines()함수 사용)

   -> 리스트, 튜플 안의 값이 str이여야 하고, 두 내용을 붙일때는 줄바꿈이 기본이 아니기 때문에 원할 경우 \n을 해준다.

 

 

   -> 파일 값을 읽어오려면 read함수를 사용하고, 한 줄씩만 출력하려면 readline() 함수 이용

   -> readlines() 함수는 리스트값으로 출력

read() 함수
readLine() 함수
readlines() 함수, a.txt안의 값이 1234\n1235 이므로 위 사진과 같이 출력시킨다.

 

 


EVE 환경 만들기

password 설정 후 로그인 -> df -k 명령어 입력 시 현재 root 메모리가 8%인 것을 확인

~# : 홈 디렉토리(~)에 root권한(#) 인 것을 확인

 

이 상태에서 웹브라우저에 내 ip를 접속한다.

나의 경우는 http://192.168.200.129 로 접속한다.

admin - eve - native console 설정 후 접속

웹브라우저 접속 화면

 

Add Folder 한 후 New Lab -> save 클릭

save 클릭 시 패킷트레이서와 동일하게 라우터 및 스위치를 세팅할 수 있는 초기화면이 나타난다.

 

WinSCP를 추가 설치한다.

저장을 누르면 '저장된 세션'에 추가된다.

추가한 세션을 더블클릭 후 비밀번호 입력 시 아래와 같은 화면이 나타난다.

좌측 - 내 PC, 우측 - EVE home directory

여기서 상위디렉토리로 간 다음 opt - unetlab - addons - iol - bin 경로에 다운받아놓은 IOL 폴더에 있는 L2, L3 파일을 복사한다.

복사 완료 화면

 

이제 EVE-NG-Win-Cline-Pack-2.0 을 설치한다.

 

그 후 EVE-112에서 cd /opt/unetlab/addons/iol/bin 으로 이동한다. ls -l 명령 시 아까 복사했던 L2, L3 파일 두 개가 보임

 

 

현재 eve-112는 우분투 서버이기 때문에 gui지원을 하지 않는다. 때문에 gedit을 사용하지 못하고 아래의 명렁어를 사용한다.

vi iourc 입력 -> eve-iol-key파일의 [license]부터 그대로 입력 -> esc -> :wq 입력 후 엔터

아래와 같이 bin 경로에 파일이 저장된 것을 확인할 수 있다.

 

그 후 웹브라우저 eve에서 new node -> Cisco IOL 에서 L2, L3 를 각각추가시켜준다.

 

이제 Ubuntu eve랑 웹브라우저랑 연결을 한다.

 

여기서 스위치를 start하면 계속 유지해야되는데 곧 정지되는 현상이 나타날 경우, 웹브라우저 sign-out을 한 후 eve-112의 메모리를 8G로 늘린 후 로그인 -> 웹브라우저 다시 로그인

이래도 같은 현상이 반복된다면 라이센스 문제다.

홈 디렉토리에서 다음을 명령한다 -> /opt/unetlab/wrappers/unl_wrapper -a fixpermissions 

 

이 사진과 같이 명령하면 해결됨

 

이제 패킷트레이서처럼 스위치를 더블클릭 해보자

패킷트레이서 CLI창과 동일하다

 

기기 간 연결은 기기스위치를 stop한 뒤에 연결을 해야한다.

 

라우터 인터페이스 ip할당 - no sh 후 내컴퓨터 cmd창에서 라우터 ip에 ping을 보내면 신호가 완료된다.

 

위 R2, 아래 R3

 

* 스위치 - no cdp run -> full duplex 메세지 삭제

* 라우터 - no service config -> tftp 서버 관련 에러 메세지. 적용 후 해당 라우터 다시시작

 

저장하는 방법

Export all CFGs 클릭

클릭 후 Startup-configs -> 모든 장치들을 on 시켜주면 다음과 같이 적용된 설정들을 확인할 수 있다.

 

리눅스 터미널에서도 설정시켰던 라우터ip주소들도 ping 확인한다.