> 백엔드 개발 > 파이썬 튜토리얼 > Python 쉘 스크립트를 사용하는 방법

Python 쉘 스크립트를 사용하는 방법

王林
풀어 주다: 2023-05-11 10:25:05
앞으로
2454명이 탐색했습니다.

1. sh

SH는 시스템 프로그램을 Python 함수에 동적으로 매핑하는 고유한 하위 프로세스 래퍼입니다. SH는 Bash의 모든 기능(간단한 명령 호출, 간단한 파이프 전송)을 지원할 뿐만 아니라 Python의 유연성도 고려한 Python에서 셸 스크립트를 작성하는 데 도움이 됩니다.

SH는 모든 시스템 프로그램을 마치 함수인 것처럼 호출할 수 있게 해주는 Python의 성숙한 하위 프로세스 인터페이스입니다. 즉, SH를 사용하면 로그인 셸에서 실행할 수 있는 거의 모든 명령을 호출할 수 있습니다.

또한 명령 출력을 더 쉽게 캡처하고 구문 분석할 수 있습니다.

2. 사용 단계

1. 설치

pip 명령을 통해 sh 설치

pip install sh
로그인 후 복사

2. 예제 사용

시작하고 실행하는 가장 쉬운 방법은 sh를 직접 가져오거나 sh에서 필요한 명령을 가져오는 것입니다. 그런 다음 명령을 Python 함수처럼 사용할 수 있습니다.

예를 들어, 매개변수를 전달하고, 출력을 캡처하고, Python에서 출력을 사용합니다. 자세한 내용은 아래 코드 예제를 참조하세요

# get interface information
import sh
print sh.ifconfig("eth0")

from sh import ifconfig
print ifconfig("eth0")

# print the contents of this directory
print ls("-l")

# substitute the dash for an underscore for commands that have dashes in their names
sh.google_chrome("http://google.com")
로그인 후 복사

하위 명령을 작성하는 두 가지 방법

# 子命令
>>> from sh import git, sudo
>>> print(git.branch("-v"))
>>> print(git("branch", "-v"))
>>> print(sudo.ls("/root"))
>>> print(sudo("/bin/ls", "/root"))

# with 环境
>>> with sh.contrib.sudo(_with=True):
        print(ls("/root"))
# _with=True 关键字告诉命令它正处于 with 环境中, 以便可以正确地运行.

#将多个参数传递给命令时,每个参数必须是一个单独的字符串:

from sh import tar
tar("cvf", "/tmp/test.tar", "/my/home/directory/")
# 这将不起作用:

from sh import tar
tar("cvf /tmp/test.tar /my/home/directory")
로그인 후 복사

3. sh를 사용하여 명령을 실행하세요

명령은 함수처럼 호출됩니다.

그러나 "이것들은 실제 Python 함수가 아닙니다. 실제로 실행되는 것은 시스템의 해당 바이너리 명령입니다. Bash와 마찬가지로 PATH를 구문 분석하여 시스템에서 동적으로 실행됩니다.

이 때문에 Python은 셸 명령에 대한 지원은 매우 훌륭하며 시스템의 모든 명령은 Python을 통해 쉽게 실행할 수 있습니다.”

많은 프로그램에는 git(branch, checkout)과 같은 자체 명령 하위 집합이 있습니다.

sh는 속성 액세스를 통해 하위 명령을 처리합니다.

from sh import git

# resolves to "git branch -v"
print(git.branch("-v"))

print(git("branch", "-v")) # the same command
로그인 후 복사

4. 키워드 인수

키워드 인수도 예상한 대로 작동합니다. 명령줄 인수 옵션으로 대체됩니다.

# Resolves to "curl http://duckduckgo.com/ -o page.html --silent"
sh.curl("http://duckduckgo.com/", o="page.html", silent=True)

# If you prefer not to use keyword arguments, this does the same thing
sh.curl("http://duckduckgo.com/", "-o", "page.html", "--silent")

# Resolves to "adduser amoffat --system --shell=/bin/bash --no-create-home"
sh.adduser("amoffat", system=True, shell="/bin/bash", no_create_home=True)

# or
sh.adduser("amoffat", "--system", "--shell", "/bin/bash", "--no-create-home")
로그인 후 복사

5. 명령 찾기

"Which"는 프로그램의 전체 경로를 찾고, 존재하지 않으면 None을 반환합니다. 이 명령은 실제로 Python 함수로 구현되는 몇 안 되는 명령 중 하나이므로 실제 "어떤" 바이너리에 의존하지 않습니다.

print sh.which("python")     # "/usr/bin/python"
print sh.which("ls")         # "/bin/ls"

if not sh.which("supervisorctl"): sh.apt_get("install", "supervisor", "-y")
로그인 후 복사

sh에서는 더 많은 기능을 사용할 수 있으며 모두 찾을 수 있습니다. 공식 문서에서.

6.Baking 매개변수

sh는 "baking" 매개변수를 명령으로 사용할 수 있으며, 이는 다음 코드에 표시된 대로 해당 전체 명령줄 문자열을 출력하는 것입니다.

# The idea here is that now every call to ls will have the “-la” arguments already specified.
from sh import ls

ls = ls.bake("-la")
print(ls) # "/usr/bin/ls -la"

# resolves to "ls -la /"
print(ls("/"))
로그인 후 복사

ssh+baking command

In "bake"에서 "bake"를 호출하는 명령은 "bake"에 전달된 모든 인수를 자동으로 전달하는 호출 가능한 객체를 생성합니다.

# Without baking, calling uptime on a server would be a lot to type out:
serverX = ssh("myserver.com", "-p 1393", "whoami")

# To bake the common parameters into the ssh command
myserver = sh.ssh.bake("myserver.com", p=1393)

print(myserver) # "/usr/bin/ssh myserver.com -p 1393"
로그인 후 복사

이제 "myserver"를 호출하여 베이킹 SSH 명령을 나타낼 수 있습니다.

# resolves to "/usr/bin/ssh myserver.com -p 1393 tail /var/log/dumb_daemon.log -n 100"
print(myserver.tail("/var/log/dumb_daemon.log", n=100))

# check the uptime
print myserver.uptime()
 15:09:03 up 61 days, 22:56,  0 users,  load average: 0.12, 0.13, 0.05
로그인 후 복사

위 내용은 Python 쉘 스크립트를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿