Maison interface Web js tutoriel Méthodes et exemples d'appel de commandes système, de scripts Shell et de scripts Python dans Nodejs_node.js

Méthodes et exemples d'appel de commandes système, de scripts Shell et de scripts Python dans Nodejs_node.js

May 16, 2016 pm 04:22 PM
nodejs

Chaque langage a ses propres avantages. Lorsqu'il est combiné les uns avec les autres, le programme s'exécutera plus efficacement ou selon la méthode d'implémentation la plus simple, utilise des processus enfants pour appeler des commandes système ou des fichiers et des documents. nodejs.org/api/child_process.html. Le processus enfant NodeJS fournit des interfaces importantes pour interagir avec le système. Ses principales API sont : des interfaces pour l'entrée standard, la sortie standard et la sortie d'erreur standard.

Le processus enfant NodeJS fournit une interface importante pour interagir avec le système. Ses principales API sont :

Interfaces pour entrée standard, sortie standard et sortie d'erreur standard

child.stdin obtient une entrée standard

child.stdout obtient une sortie standard
child.stderr obtient une sortie d'erreur standard
Récupérez le PID du processus enfant : child.pid
Fournit une méthode pour générer un processus enfant : child_process.spawn(cmd, args=[], [options])
Fournit une méthode pour exécuter directement les commandes système : child_process.exec(cmd, [options], callback)
Fournit une méthode pour appeler les fichiers de script : child_process.execFile(file, [args], [options], [callback])
Fournit une méthode pour tuer le processus : child.kill(signal='SIGTERM')

Prenons un exemple pour le ressentir, c'est très intéressant, haha~~

1. Utilisez des processus enfants pour appeler des commandes système (obtenir l'utilisation de la mémoire système)

Créez un nouveau fichier nodejs nommé cmd_spawn.js avec le code suivant :


Copier le code Le code est le suivant :
var spawn = require('child_process').spawn;
free = spawn('free', ['-m']);
// Capturez la sortie standard et imprimez-la sur la console

free.stdout.on('data', function (data) {
console.log('sortie standard:n' données);
});

// Capturez la sortie d'erreur standard et imprimez-la sur la console

free.stderr.on('data', function (data) {
console.log('sortie d'erreur standard : n' données);
});

//Enregistrer l'événement d'arrêt du processus enfant

free.on('exit', function (code, signal) {
console.log('processus enfant eixt,exit:' code);
});

Voici les résultats de l'exécution de ce script et de l'exécution directe de la commande 'free -m', qui sont exactement les mêmes :

2. Exécuter la commande système (child_process.exec())

J'utilise encore celui-ci très souvent, et ses fonctions me semblent un peu plus puissantes que celles ci-dessus. Par exemple, j'aime faire attention à la météo. Maintenant, je veux recourber l'interface météo pour renvoyer les données au format json. Peut-être que je dois effectuer certaines opérations dessus, donc je vais l'imprimer et ne pas l'utiliser.

Créez un nouveau fichier nodejs nommé cmd_exec.js :

Copier le code Le code est le suivant :
var exec = require('child_process').exec
var cmdStr = 'curl http://www.weather.com.cn/data/sk/101010100.html';
exec(cmdStr, fonction(err,stdout,stderr){
Si (erreur) {
console.log('obtenir l'erreur de l'API météo :' stderr);
} autre {
          /*
Le contenu de cette sortie standard est ce que j'ai décrit ci-dessus :
{"weatherinfo":{"city":"Pékin","cityid":"101010100","temp":"3","WD":"Vent du Nord-Ouest","WS":"Niveau 3","SD ":"23%","WSE":"3","time":"21:20","isRadar":"1","Radar":"JC_RADAR_AZ9010_JB","njd":"Pas encore de diffusion en direct " ,"qy":"1019"}}
*/
        var data = JSON.parse(stdout);
console.log(données);
>
});

Pensons que le résultat du curling direct et de l'exécution du script est le même :

3. Appelez le script shell en passant les paramètres (child_process.execFile())

Cela nécessite d'abord de préparer un script shell. Par exemple, si je souhaite me connecter à un serveur pour changer son mot de passe, je dois fournir l'adresse IP, l'utilisateur, le nouveau mot de passe, l'ancien mot de passe et créer un nouveau fichier de script shell change_password. .sh :

Copier le code Le code est le suivant :

#!/bin/sh

IP=""
NOM=""
MOT DE PASSE=""
NOUVEAU MOT DE PASSE=""

while getopts "H:U:P:N:" arg #Les deux points après l'option indiquent que l'option nécessite des paramètres
faire
cas $arg dans
H)
IP=$OPTARG
;;
U)
NOM=$OPTARG
;;
             P)
                   MOT DE PASSE=$OPTARG
;;
                N)
                 NEWPASSWORD=$OPTARG
;;
                  ?)  #Quand certaines options ne sont pas reconnues, l'argument est ?
                  echo "Contient des paramètres inconnus"
sortie 1
;;
      esac
fait

#Obtenez d'abord l'ID utilisateur
USERID=`/usr/bin/ipmitool -I lanplus -H $IP -U $NAME -P $PASSWORD liste d'utilisateurs | grep root | # echo $USERID
#Changer le mot de passe en fonction de l'ID utilisateur
/usr/bin/ipmitool -I lanplus -H $IP -U $NAME -P $PASSWORD mot de passe défini par l'utilisateur $USERID $NEWPASSWORD

Ensuite je prépare un fichier nodejs pour appeler ce script shell, appelé file_changepwd.js :

Copier le code Le code est le suivant :
var callfile = require('child_process');
var ip = '1.1.1.1';
var nom d'utilisateur = 'test';
var mot de passe = 'pwd';
var nouveau mot de passe = 'nouveau mot de passe';
callfile.execFile('change_password.sh',['-H', ip, '-U', nom d'utilisateur, '-P', mot de passe, '-N', nouveau mot de passe],null,fonction (err, stdout , stderr) {

​ rappel(err, stdout, stderr);
});

Il n'est pas pratique de publier les résultats en cours ici, mais je peux personnellement garantir qu'ils ont été testés.

Après avoir lu ce qui précède, il n'y a en fait aucun suspense quant à l'appel du script python. Il s'agit essentiellement d'exécuter la commande.

4. Appelez le script python (le script python lui-même passe des paramètres)

Insérez ici une digression. Le paragraphe suivant est une brève explication des paramètres passés en python :

Copier le code Le code est le suivant :
# -*-coding:utf-8 -*-
'''
Module requis : sys
Nombre de paramètres : len(sys.argv)
Nom du script : sys.argv[0]
Paramètre 1 : sys.argv[1]
Paramètre 2 : sys.argv[2]
'''
importer le système
imprimez votre "nom du script :", sys.argv[0]
for i in range(1, len(sys.argv)): #Les paramètres ici commencent à partir de 1
Imprimez votre "paramètre", i, sys.argv[i]

Résultat de l'exécution :

Je vais également préparer un fichier nodejs pour appeler ce script python (j'ai apporté des modifications à py_test.py, voir ci-dessous), file_python.js :

Copier le code Le code est le suivant :

var exec = require('child_process').exec;
var arg1 = 'bonjour'
var arg2 = 'jzhou'
exec('python py_test.py ' arg1 ' ' arg2 ' ',function(erreur,stdout,stderr){
Si(stdout.length >1){
console.log('vous proposez args:',stdout);
} autre {
console.log('vous ne proposez pas d'arguments');
>
Si(erreur) {
console.info('stderr : 'stderr);
>
});

Le contenu de py_test.py est le suivant :
# -*-coding:utf-8 -*-
importer le système
imprimer sys.argv

Les résultats en cours d'exécution sont les suivants :

C'est toujours très bien, et j'ai réalisé un autre blog exquis pour 2014. Haha~~

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La différence entre nodejs et vuejs La différence entre nodejs et vuejs Apr 21, 2024 am 04:17 AM

Node.js est un environnement d'exécution JavaScript côté serveur, tandis que Vue.js est un framework JavaScript côté client permettant de créer des interfaces utilisateur interactives. Node.js est utilisé pour le développement côté serveur, comme le développement d'API de service back-end et le traitement des données, tandis que Vue.js est utilisé pour le développement côté client, comme les applications monopage et les interfaces utilisateur réactives.

Nodejs est-il un framework backend ? Nodejs est-il un framework backend ? Apr 21, 2024 am 05:09 AM

Node.js peut être utilisé comme framework backend car il offre des fonctionnalités telles que des performances élevées, l'évolutivité, la prise en charge multiplateforme, un écosystème riche et une facilité de développement.

Comment connecter Nodejs à la base de données MySQL Comment connecter Nodejs à la base de données MySQL Apr 21, 2024 am 06:13 AM

Pour vous connecter à une base de données MySQL, vous devez suivre ces étapes : Installez le pilote mysql2. Utilisez mysql2.createConnection() pour créer un objet de connexion contenant l'adresse de l'hôte, le port, le nom d'utilisateur, le mot de passe et le nom de la base de données. Utilisez connection.query() pour effectuer des requêtes. Enfin, utilisez connection.end() pour mettre fin à la connexion.

Quelles sont les variables globales dans nodejs Quelles sont les variables globales dans nodejs Apr 21, 2024 am 04:54 AM

Les variables globales suivantes existent dans Node.js : Objet global : global Module principal : processus, console, nécessiter Variables d'environnement d'exécution : __dirname, __filename, __line, __column Constantes : undefined, null, NaN, Infinity, -Infinity

Quelle est la différence entre les fichiers npm et npm.cmd dans le répertoire d'installation de nodejs ? Quelle est la différence entre les fichiers npm et npm.cmd dans le répertoire d'installation de nodejs ? Apr 21, 2024 am 05:18 AM

Il existe deux fichiers liés à npm dans le répertoire d'installation de Node.js : npm et npm.cmd. Les différences sont les suivantes : différentes extensions : npm est un fichier exécutable et npm.cmd est un raccourci de fenêtre de commande. Utilisateurs Windows : npm.cmd peut être utilisé à partir de l'invite de commande, npm ne peut être exécuté qu'à partir de la ligne de commande. Compatibilité : npm.cmd est spécifique aux systèmes Windows, npm est disponible multiplateforme. Recommandations d'utilisation : les utilisateurs Windows utilisent npm.cmd, les autres systèmes d'exploitation utilisent npm.

Y a-t-il une grande différence entre nodejs et java ? Y a-t-il une grande différence entre nodejs et java ? Apr 21, 2024 am 06:12 AM

Les principales différences entre Node.js et Java résident dans la conception et les fonctionnalités : Piloté par les événements ou piloté par les threads : Node.js est piloté par les événements et Java est piloté par les threads. Monothread ou multithread : Node.js utilise une boucle d'événements monothread et Java utilise une architecture multithread. Environnement d'exécution : Node.js s'exécute sur le moteur JavaScript V8, tandis que Java s'exécute sur la JVM. Syntaxe : Node.js utilise la syntaxe JavaScript, tandis que Java utilise la syntaxe Java. Objectif : Node.js convient aux tâches gourmandes en E/S, tandis que Java convient aux applications de grande entreprise.

Nodejs est-il un langage de développement back-end ? Nodejs est-il un langage de développement back-end ? Apr 21, 2024 am 05:09 AM

Oui, Node.js est un langage de développement backend. Il est utilisé pour le développement back-end, notamment la gestion de la logique métier côté serveur, la gestion des connexions à la base de données et la fourniture d'API.

Lequel choisir entre nodejs et java ? Lequel choisir entre nodejs et java ? Apr 21, 2024 am 04:40 AM

Node.js et Java ont chacun leurs avantages et leurs inconvénients en matière de développement Web, et le choix dépend des exigences du projet. Node.js excelle dans les applications en temps réel, le développement rapide et l'architecture de microservices, tandis que Java excelle dans la prise en charge, les performances et la sécurité de niveau entreprise.

See all articles