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

Cara menggunakan skrip shell Python

王林
Lepaskan: 2023-05-11 10:25:05
ke hadapan
2462 orang telah melayarinya

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
Salin selepas log masuk

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")
Salin selepas log masuk

# 子命令
>>> 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")
Salin selepas log masuk

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
Salin selepas log masuk

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")
Salin selepas log masuk

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")
Salin selepas log masuk

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("/"))
Salin selepas log masuk

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"
Salin selepas log masuk
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
Salin selepas log masuk

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

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan