반응형

안녕하세요. 이번에는 원격으로 자동화를 도와주는 파이썬 라이브러리인 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

 

반응형

+ Recent posts