Rumah >pembangunan bahagian belakang >Tutorial Python >Cara menggunakan skrip shell Python

Cara menggunakan skrip shell Python

王林
王林ke hadapan
2023-05-11 10:25:052474semak imbas

1. Apakah itu sh

SH ialah pembungkus subproses unik yang boleh memetakan program sistem anda secara dinamik kepada fungsi Python. SH membantu anda menulis skrip Shell dalam Python, yang bukan sahaja menyokong semua fungsi Bash (seruan perintah mudah, penghantaran paip mudah), tetapi juga mengambil kira fleksibiliti Python.

SH ialah antara muka subproses matang dalam Python yang membolehkan anda memanggil sebarang program sistem seolah-olah ia adalah satu fungsi. Iaitu, SH membolehkan anda menggunakan hampir semua arahan yang boleh dijalankan daripada shell log masuk.

Apatah lagi, anda boleh menangkap dan menghuraikan output arahan anda dengan lebih mudah.

2. Langkah penggunaan

1. Pemasangan

Pasang sh melalui arahan pip

pip install sh

2 cara termudah untuk dijalankan ialah mengimport sh secara langsung atau mengimport arahan yang anda perlukan dari sh. Perintah itu kemudiannya boleh digunakan seperti fungsi Python.

Sebagai contoh, lulus parameter, tangkap output dan gunakan output dalam python. Lihat contoh kod di bawah untuk butiran. Dua cara untuk menulis subperintah

# 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.

Tetapi "Perlu diingatkan bahawa ini bukan fungsi Python sebenar. Apa yang sebenarnya dijalankan ialah arahan binari yang sepadan dalam sistem, sama seperti Bash, yang berjalan secara dinamik pada sistem dengan menghuraikan PATH.

Disebabkan ini, Python mempunyai sokongan yang sangat baik untuk arahan Shell, dan semua arahan pada sistem boleh dijalankan dengan mudah melalui Python ”

Banyak program mempunyai subset arahan mereka sendiri, seperti git (cawangan. , semak).

sh mengendalikan subperintah melalui akses atribut.

from sh import git

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

print(git("branch", "-v")) # the same command

4. Argumen Kata Kunci

Argumen kata kunci juga berfungsi seperti yang anda jangkakan: ia digantikan dengan pilihan argumen baris arahan.

# 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. Cari arahan

"Yang" mencari laluan penuh program dan mengembalikan Tiada jika ia tidak wujud. Perintah ini adalah salah satu daripada beberapa yang sebenarnya dilaksanakan sebagai fungsi Python, dan oleh itu tidak bergantung pada binari "yang" sebenar.

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 mempunyai lebih banyak ciri yang tersedia dan kesemuanya boleh ditemui. dalam dokumentasi rasmi.

6. Parameter penaik

sh boleh menggunakan parameter "baking" sebagai arahan, iaitu untuk mengeluarkan rentetan baris arahan lengkap yang sepadan, seperti yang ditunjukkan dalam kod berikut:

# 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("/"))

arahan ssh+baking

Memanggil "bake" pada arahan akan mencipta objek boleh panggil yang secara automatik akan melepasi semua parameter yang dihantar kepada "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"
Kini, "myserver" boleh dipanggil untuk mewakili arahan baking 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

Atas ialah kandungan terperinci Cara menggunakan skrip shell Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam