반응형

안녕하세요. 이번에는 원격으로 자동화를 도와주는 파이썬 라이브러리인 Fabric에 대해 알아보겠습니다. Fabric은 SSH를 사용하여 원격 서버에서 명령 실행 및 파일 전송을 자동화하는 도구입니다. 

 

웹이나, 로컬 PC 자동화의 관심이 있으신 분들은 아래 포스팅을 참고해보시길 바랍니다.

 

로컬 PC 자동화

https://nakco.tistory.com/entry/%EC%B4%88%EB%B3%B4%EC%9E%90%EB%8F%84-%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9C%BC%EB%A1%9C-%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C-%EC%9D%BC%ED%95%98%EC%9E%90-pyautogui-%EC%86%8C%EA%B0%9C

 

초보자도 파이썬으로 자동으로 일하자: pyautogui 소개

안녕하세요. 이번에는 파이썬 라이브러리 중 자동화에 쓰이는 pyautogui에 대해 알아보겠습니다. 사용법도 매우 간단하기 때문에, 파이썬을 잘 모르는 분들이나, 초보자분들도 쉽게 따라하실 수

nakco.tistory.com

 

웹 자동화

https://nakco.tistory.com/entry/%EC%9B%B9-%EC%8A%A4%ED%81%AC%EB%9E%98%ED%95%91%EB%B6%80%ED%84%B0-%EA%B2%8C%EC%9E%84-%EC%9E%90%EB%8F%99%ED%99%94%EA%B9%8C%EC%A7%80-%EB%8B%A4%EC%96%91%ED%95%9C-Selenium-%ED%99%9C%EC%9A%A9-%EC%98%88%EC%8B%9C

 

웹 스크래핑부터 게임 자동화까지: 다양한 Selenium 활용 예시

안녕하세요. 오늘은 Python 자동화 라이브러리 중 Selenium에 대해 알아보도록 하겠습니다. Selenium은 웹 브라우저를 제어하여 웹 페이지를 자동으로 탐색하고 상호작용하는 데 사용되는 라이브러리

nakco.tistory.com

 

자동화 Program을 만들어 여러 PC에서 한번에 실행시키고 싶으신 분들은 Fabric 라이브러리를 꼭 한번 공부해보시길 바랍니다.

 

 

Fabric이란?

Fabric은 파이썬 기반의 라이브러리로, 원격 서버에서 명령 실행과 파일 전송 등을 자동화하는 도구입니다. 주로 시스템 관리자나 개발자들이 서버 관리 작업을 편리하게 수행하기 위해 사용됩니다. Fabric을 사용하면 명령 프롬프트에서 서버에 접속하지 않고도 원격으로 명령 실행 및 파일 전송을 수행할 수 있습니다.

 

  • SSH 기반: Fabric은 SSH(Secure Shell) 프로토콜을 사용하여 원격 서버에 접속합니다. 이를 통해 안전한 원격 통신을 수행할 수 있습니다.

  • 명령 실행: Fabric을 사용하면 원격 서버에서 명령을 실행할 수 있습니다. 서버 관리 작업이나 배치 작업을 자동화할 때 유용하게 사용됩니다.

  • 파일 전송: 로컬 컴퓨터와 원격 서버 간에 파일을 전송할 수 있습니다. 이를 통해 프로젝트 파일이나 설정 파일 등을 원격 서버로 복사할 수 있습니다.

  • 태스크 실행: Fabric은 작업을 태스크(task) 단위로 정의하고 실행할 수 있습니다. 각 태스크는 파이썬 함수로 정의되며, 이 함수 내에서 원격 명령 실행 및 파일 전송과 같은 작업을 지정할 수 있습니다.

  • 세션 관리: Fabric은 원격 서버와의 세션을 관리하여 여러 서버에 동시에 작업을 수행하는 것도 가능합니다.

 

Fabric 코드 예시

from fabric import Connection

# 원격 서버에 접속
with Connection('username@server_address') as c:
    # 명령 실행
    result = c.run('ls -l', hide=True)
    print(result.stdout)

 

위 코드는 원격 서버에 접속한 후 ls -l 명령을 실행하고 결과를 출력하는 간단한 예시입니다. 이와 같이 Fabric은 명령 실행과 파일 전송을 편리하게 자동화할 수 있는 도구입니다.

 

SSH란?

 SSH(Secure Shell)는 네트워크 프로토콜 중 하나로, 컴퓨터 간의 안전하고 암호화된 원격 접속과 데이터 통신을 제공하는 프로토콜입니다. 주로 원격 서버에 접속하거나 파일을 전송하는 등의 작업을 안전하게 수행하기 위해 사용됩니다. 

 

  • 보안: SSH는 데이터를 암호화하여 전송하므로, 제3자가 데이터를 감청하거나 수정하는 것을 방지합니다. 암호화된 통신을 통해 데이터의 기밀성과 무결성을 보장합니다.

  • 원격 접속: SSH를 사용하면 원격 서버에 로그인하여 터미널에서 명령을 실행할 수 있습니다. 서버 관리자는 텍스트 기반의 인터페이스를 통해 서버를 관리할 수 있습니다.

  • 파일 전송: SSH를 이용하여 로컬 컴퓨터와 원격 서버 간에 파일을 전송할 수 있습니다. scp 명령을 사용하여 파일을 복사할 수 있습니다.

  • 포트 포워딩: SSH를 이용한 포트 포워딩을 통해 로컬 컴퓨터와 원격 서버 사이의 네트워크 서비스를 연결하거나 중계할 수 있습니다.

  • 공개키 인증: SSH는 비밀번호 대신 공개키와 개인키를 사용한 인증 방식을 지원합니다. 이를 통해 보다 안전한 로그인 및 인증을 할 수 있습니다.

  • 다양한 응용: SSH는 원격 접속과 파일 전송을 넘어서, 데이터베이스 접속, 원격 Git 저장소 접근, 보안 터널링 등 다양한 응용 분야에서 사용됩니다.

 일반적으로 SSH는 터미널 기반의 인터페이스를 통해 사용되며, 네트워크 관련 작업에서 중요한 보안 기술 중 하나로 여겨집니다.

 

Fabric 활용 방안

  • 서버 관리 및 배포 자동화: 서버 관리자는 Fabric을 사용하여 서버에서 필요한 명령을 자동으로 실행하거나, 업데이트된 코드나 설정 파일을 배포하는 작업을 간편하게 수행할 수 있습니다.

  • 배치 작업 실행: 특정 시간이나 주기마다 서버에서 일정한 작업을 실행해야 하는 경우, Fabric을 사용하여 작업을 예약하고 실행할 수 있습니다.

  • 웹 애플리케이션 배포: 웹 개발자는 코드의 변경 사항을 자동으로 서버로 배포할 수 있습니다. Git 저장소와 연동하여 코드를 자동으로 업데이트하고, 웹 서버를 재시작할 수도 있습니다.

  • 로그 파일 수집 및 분석: 서버의 로그 파일을 자동으로 수집하여 로그 분석을 수행하거나 중요한 정보를 추출하는 작업을 자동화할 수 있습니다.

  • 데이터 백업: 서버에서 생성되는 중요한 데이터나 파일을 정기적으로 백업하여 안전한 저장소로 전송하는 작업을 자동화할 수 있습니다.

  • 환경 구성 자동화: 새로운 서버 환경을 구성할 때, Fabric을 사용하여 필요한 패키지 설치, 설정 파일 복사, 서비스 실행 등을 자동화할 수 있습니다.

  • 테스트 환경 관리: 개발자나 QA팀은 테스트 환경을 자동으로 구성하고 테스트 스크립트를 실행하여 테스트 결과를 수집하는 작업을 자동화할 수 있습니다.

  • 보안 강화: 서버의 보안을 강화하는 작업을 자동화하여 주기적인 보안 점검, 패치 업데이트, 취약점 스캔 등을 수행할 수 있습니다.

  • 서버 모니터링 및 알림: 서버의 상태를 주기적으로 모니터링하고, 문제가 발생하면 알림을 받는 작업을 자동화하여 신속한 대응이 가능하도록 할 수 있습니다.

  • 다양한 태스크 자동화: 기타 서버 관리 작업이나 원격 작업을 필요로 하는 다양한 업무를 Fabric을 통해 자동화할 수 있습니다.

이러한 기능들을 조합하여 정말 무궁 무진한 프로그램들을 만들 수 있습니다. 직접 해보면 정말 신기하면서도 재미있습니다. Fabric은 이러한 다양한 활용 방안을 통해 서버 관리와 자동화 작업을 효율적으로 수행할 수 있도록 도와주는 유용한 도구입니다.

 

Fabric 사용 방법

Fabric에서는 작업을 함수로 정의하고, 이 함수를 호출하여 원격 작업을 실행합니다. 이때 @task 데코레이터를 사용하여 함수를 Fabric 태스크로 지정합니다.

 

아래 예시에서 c는 Connection 객체로, 원격 서버에 연결하기 위한 정보를 담고 있습니다. c.run("ls -l")는 원격 서버에서 ls -l 명령을 실행하는 예시입니다.

from fabric import task

@task
def my_task(c):
    c.run("ls -l")

 

 

태스크를 실행하려면 명령줄에서 Fabric 명령을 사용합니다. fab 명령 다음에 태스크 이름을 입력하면 해당 태스크가 실행됩니다.

fab my_task

 

파일 전송을 자동화하려면 put() 함수를 사용할 수 있습니다. 아래 예시에서 localfile.txt 파일을 로컬에서 원격 서버로 전송합니다.

from fabric import task

@task
def upload_file(c):
    c.put("localfile.txt", "/remote/directory/")

 

태스크 간에 의존성을 설정하려면 @task 데코레이터 위에 @task("dependency_task")와 같이 데코레이터를 추가하여 의존하는 태스크를 지정할 수 있습니다.

from fabric import task

@task
def dependency_task(c):
    c.run("echo This is a dependency task")

@task("dependency_task")
def main_task(c):
    c.run("echo This is the main task")

 

원격에서 파이썬 코드 실행

from fabric import Connection, task

@task
def say_hello_robot(c):
    # 원격 서버에 연결
    with Connection('your_username@server_address') as conn:
        # 원격 서버에서 파이썬 스크립트 실행
        conn.run('python -c "print(\\"안녕하세요!\\")"')

 

터미널에서 해당 명렁 실행

fab say_hello_robot

 

반응형
반응형

파이썬은 간단하고, 가독성이 좋은 프로그래밍언어 입니다. 대화형 컴파일러를 사용하기 때문에 한줄한줄 테스트하면서 코딩할 수 있어 편하고, 코드가 직관적이여서 잘 몰라도 한번에 보고 대충 어떤 기능을 하는지 알 수 있습니다. Python은 다양한 목적으로 사용되며, 웹 개발, 데이터 분석, 인공 지능, 자동화 등 다양한 분야에서 널리 사용됩니다.

 

Python은 객체 지향 프로그래밍과 함수형 프로그래밍의 요소를 모두 지원하며, 동적 타이핑 언어로 변수의 자료형을 명시적으로 선언하지 않아도 됩니다. 이는 개발자가 유연하게 코드를 작성하고 수정하고 실행하는 데 도움을 줍니다.

Python은 다양한 운영 체제에서 실행될 수 있으며, 오픈 소스 특성을 갖고 있어 무료로 사용할 수 있습니다. 또한, 활발한 개발자 커뮤니티와 방대한 문서 및 자습서가 있어 학습 및 문제 해결에 도움이 되는 장점도 있습니다.

요약하자면, Python은 쉽고 간결한 문법, 다양한 용도로 활용 가능한 풍부한 라이브러리, 다양한 개발자 커뮤니티의 지원을 통해 인기 있는 프로그래밍 언어입니다.

 

https://www.python.org/

 

Welcome to Python.org

The official home of the Python Programming Language

www.python.org

 

파이썬 장점


1 . 가독성과 간결성: Python은 읽기 쉽고 간결한 문법을 가지고 있어 코드를 이해하기 쉽습니다. 이는 개발자들이 빠르게 코드를 작성하고 유지보수하는 데 도움이 됩니다.

2. 다양한 라이브러리: Python은  다양한 라이브러리와 모듈을 제공합니다. 데이터 분석, 웹 개발, 인공 지능, 자동화 등 다양한 분야에서 유용하게 사용될 수 있습니다. 대표적인 라이브러리로는 NumPy, Pandas, Matplotlib, TensorFlow, Django 등이 있습니다.

3. 크로스 플랫폼 지원: Python은 다양한 운영 체제에서 실행될 수 있습니다. Windows, macOS, Linux를 비롯한 다양한 플랫폼에서 동일한 코드를 실행할 수 있어 개발자들에게 유연성을 제공합니다.

4. 빠른 개발 속도: Python은 간단하고 짧은 문법을 가지고 있어 개발 속도를 높일 수 있습니다. 또한, 다양한 라이브러리와 모듈을 활용하여 개발 시간을 단축할 수 있습니다.

5. 커뮤니티 지원: Python은 활발한 개발자 커뮤니티를 갖고 있어서 많은 지식과 지원을 얻을 수 있습니다. Python 개발자들은 서로의 경험을 공유하고 질문에 대답하며, 오픈 소스 프로젝트에 기여함으로써 커뮤니티를 발전시키고 있습니다.

6. 다른 언어와의 통합성: Python은 다른 프로그래밍 언어와의 통합이 비교적 용이합니다. C, C++, Java 등 다른 언어로 작성된 코드를 Python과 결합하여 사용할 수 있으며, 대부분의 언어와 상호 운용성을 지원합니다.


파이썬 단점


1. 실행 속도: Python은 인터프리터 언어로 동작하며, 다른 언어에 비해 상대적으로 실행 속도가 느릴 수 있습니다. 특히, 반복문과 같은 연산이 많은 작업에서는 C나 C++과 같은 컴파일러 언어보다 느릴 수 있습니다. 이러한 이유로 Python은 CPU 작업에는 적합하지 않을 수 있습니다.

2. GIL (Global Interpreter Lock): Python은 GIL이라는 잠금 메커니즘을 갖고 있습니다. GIL은 한 번에 하나의 스레드만 파이썬 바이트 코드를 실행할 수 있게 제한합니다. 이로 인해 멀티스레드 환경에서 CPU 집약적인 작업에 제약이 생길 수 있습니다. 하지만 I/O 작업(네트워크 요청, 파일 입출력 등)에서는 GIL이 큰 영향을 미치지 않습니다.

3. 메모리 사용량: Python은 동적 타입 언어이기 때문에 객체의 자료형을 런타임에 결정하고 메모리를 할당합니다. 이로 인해 메모리 사용량이 크게 증가할 수 있습니다. 특히 대규모 데이터 처리나 인공지능 학습을 하는 경우에는 메모리 사용에 주의해야 합니다.

4. 모바일 및 브라우저 지원: Python은 주로 서버 사이드 및 데이터 분석 등의 영역에서 많이 사용됩니다. 하지만 모바일 앱 개발이나 웹 브라우저에서 직접적으로 실행되는 클라이언트 측 애플리케이션을 개발하는 데는 제한이 있습니다. 모바일 개발은 대부분 Java (Android) 또는 Swift/Objective-C (iOS)과 같은 다른 언어를 사용하는 것이 일반적입니다. 최근에는 코틀린이 급 부상하고 있습니다.

5. 러닝 커브: Python은 초보자가 배우기 쉽지만, 고급 기능을 다루거나 성능 최적화를 위한 고급 기법을 사용하는 것은 러닝 커브가 있을 수 있습니다. 이러한 고급 기법을 사용하려면 추가적인 학습과 경험이 필요합니다.


파이썬 개발 툴



PyCharm: JetBrains에서 개발한 통합 개발 환경(IDE)로, Python뿐만 아니라 다양한 언어와 프레임워크를 지원합니다. 코드 작성, 디버깅, 테스팅 등 다양한 개발 기능을 제공하며, 프로젝트 관리와 협업에도 유용합니다.

https://www.jetbrains.com/ko-kr/pycharm/

Visual Studio Code: 마이크로소프트에서 개발한 경량 코드 편집기로, Python을 비롯한 다양한 언어를 지원합니다. 확장성이 뛰어나고 다양한 플러그인과 테마를 제공하여 개발자들이 자신에게 맞는 환경을 구축할 수 있습니다.
https://code.visualstudio.com/

 

Jupyter Notebook/JupyterLab: 데이터 과학 및 데이터 분석 작업에 많이 사용되는 도구입니다. 코드와 실행 결과, 그래프, 설명 등을 하나의 문서로 통합하여 작업할 수 있습니다. Jupyter Notebook은 브라우저에서 사용되며, JupyterLab은 더욱 확장 가능한 통합 개발 환경을 제공합니다.

https://jupyter.org/

Spyder: 딥러닝과 데이터 분석을 위해 설계된 개발 환경입니다. IPython 콘솔과 통합되어 있어 인터랙티브한 개발과 실험을 할 수 있습니다. 코드 탐색기, 변수 탐색기, 그래프 도구 등을 포함하고 있어 데이터 분석 작업에 유용합니다.

*Spyder은 파이참 다운로드 시 같이 다운받을 수 있습니다. 

Sublime Text: 가벼운 텍스트 편집기로, Python을 비롯한 다양한 언어를 지원합니다. 플러그인 시스템을 통해 다양한 기능과 확장성을 제공하며, 커스터마이징이 용이합니다.

Atom: 오픈 소스 텍스트 편집기로, 다양한 테마와 플러그인을 제공하여 개발 환경을 맞춤 설정할 수 있습니다.

 

 

Project Jupyter

The Jupyter Notebook is a web-based interactive computing platform. The notebook combines live code, equations, narrative text, visualizations, interactive dashboards and other media.

jupyter.org

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

 

PyCharm: JetBrains가 만든 전문 개발자용 Python IDE

 

www.jetbrains.com

 

 

PyCharm 다운로드: JetBrains가 만든 전문 개발자용 Python IDE

 

www.jetbrains.com


저는 인공지능을 할 때는 Jupyter나 Spyder를 주로 사용했고, Python으로 자동화 programming을 할 때는 VSCode를 주로 사용했습니다. Pycharm이나 Spyder는 무거운 프로그램을 돌릴 때 좋은 것 같고, VSCode는 가벼운 프로그램에 적합한 것 같습니다.

 

마무리

파이썬은 확실히 처음 프로그래밍할 때 그렇게 어렵게 느껴지지 않고, 정말 다양한 라이브러리들이 잘 나와 있어 프로그래머에게 가장 편안한 언어인 것 같습니다. 코딩테스트를 준비 할 때도, C++이나 Java에 비해 훨씬 짧고 쉽게 구현 할 수 있습니다. 아직 대한민국 기업들에서는 파이썬을 그렇게 선호하는 것 같진 않지만, 최근에 속도 측면에서도 많이 개선이 되었고, 전세계적으로 점점 파이썬으로 넘어오는 추세라 파이썬 언어를 한번 공부해보시는 것도 좋을 것 같습니다. 

반응형

+ Recent posts