Maison >développement back-end >Tutoriel Python >Comment utiliser le script shell Python

Comment utiliser le script shell Python

王林
王林avant
2023-05-11 10:25:052501parcourir

1. Qu'est-ce que sh

SH est un wrapper de sous-processus unique qui mappe dynamiquement vos programmes système aux fonctions Python. SH vous aide à écrire des scripts Shell en Python, qui non seulement prennent en charge toutes les fonctions de Bash (simple invocation de commande, simple transmission de canal), mais prennent également en compte la flexibilité de Python.

SH est une interface de sous-processus mature en Python qui vous permet d'appeler n'importe quel programme système comme s'il s'agissait d'une fonction. Autrement dit, SH vous permet d'appeler presque toutes les commandes pouvant être exécutées à partir d'un shell de connexion.

De plus, vous pouvez capturer et analyser le résultat de vos commandes plus facilement.

2. Étapes d'utilisation

1. Installation

Installez sh via la commande pip

pip install sh

2. Utilisez des exemples

Le moyen le plus simple de démarrer est d'importer directement sh ou d'importer les commandes dont vous avez besoin depuis sh. La commande peut alors être utilisée comme une fonction Python.

Comme transmettre des paramètres, capturer la sortie et utiliser la sortie en python. Voir les exemples de code ci-dessous pour plus de détails

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

Deux façons d'écrire des sous-commandes

# 子命令
>>> 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 Utilisez sh pour exécuter des commandes

Les commandes sont appelées comme des fonctions.

Mais "Il convient de noter qu'il ne s'agit pas de véritables fonctions Python. Ce qui est réellement exécuté est la commande binaire correspondante dans le système. Tout comme Bash, elle s'exécute dynamiquement sur le système en analysant PATH.

Pour cette raison, Python La prise en charge des commandes Shell est très bonne et toutes les commandes du système peuvent être facilement exécutées via Python »

De nombreux programmes ont leur propre sous-ensemble de commandes, comme git (branch, checkout).

sh gère les sous-commandes via l'accès aux attributs.

from sh import git

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

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

4. Arguments de mots-clés

Les arguments de mots-clés fonctionnent également comme vous vous en doutez : ils sont remplacés par des options d'argument de ligne de commande.

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

"Which" trouve le chemin complet du programme et renvoie Aucun s'il n'existe pas. Cette commande est l’une des rares à être réellement implémentée en tant que fonction Python et ne repose donc pas sur un véritable binaire « which ».

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

if not sh.which("supervisorctl"): sh.apt_get("install", "supervisor", "-y")

Il existe de nombreuses autres fonctionnalités disponibles et toutes peuvent être trouvées. dans la documentation officielle.

6.Paramètre de cuisson

sh peut utiliser le paramètre "baking" comme commande, qui consiste à afficher la chaîne de ligne de commande complète correspondante, comme indiqué dans le code suivant :

# 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 la commande Appeler "bake" sur "bake" crée un objet appelable qui transmet automatiquement tous les arguments passés à "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"

Maintenant, "myserver" peut être appelé pour représenter une commande ssh de cuisson :

# 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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer