shell脚本和python脚本和go脚本的区别_Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例-Go语言中文社区...
NodeJS 子进程提供了与系统交互的重要接口,其主要 API 有:
1)标准输入、标准输出及标准错误输出的接口;
child.stdin 获取标准输入
child.stdout 获取标准输出
child.stderr 获取标准错误输出
2)获取子进程的PID:child.pid
提供生成子进程的方法:child_process.spawn(cmd, args=[], [options])
提供直接执行系统命令的方法:child_process.exec(cmd, [options], callback)
提供调用脚本文件的方法:child_process.execFile(file, [args], [options], [callback])
提供杀死进程的方法:child.kill(signal='SIGTERM')
1、利用子进程调用系统命令(获取系统内存使用情况)
新建nodejs文件,名为cmd_spawn.js,代码如下:
var spawn = require('child_process').spawn;
free = spawn('free', ['-m']);
// 捕获标准输出并将其打印到控制台
free.stdout.on('data', function (data) {
console.log('standard output:n' + data);
});
// 捕获标准错误输出并将其打印到控制台
free.stderr.on('data', function (data) {
console.log('standard error output:n' + data);
});
// 注册子进程关闭事件
free.on('exit', function (code, signal) {
console.log('child process eixt ,exit:' + code);
});
运行该脚本和直接运行命令'free -m'的结果,一模一样:
2、执行系统命令(child_process.exec())
实例,要curl一下天气的接口返回json格式的数据。
新建nodejs文件,名为cmd_exec.js:
var exec = require('child_process').exec;
var cmdStr = 'curl http://www.weather.com.cn/data/sk/101010100.html';
exec(cmdStr, function(err,stdout,stderr){
if(err) {
console.log('get weather api error:'+stderr);
} else {
/*
这个stdout的内容就是上面我curl出来的这个东西:
{"weatherinfo":{"city":"北京","cityid":"101010100","temp":"3","WD":"西北风","WS":"3级","SD":"23%","WSE":"3","time":"21:20","isRadar":"1","Radar":"JC_RADAR_AZ9010_JB","njd":"暂无实况","qy":"1019"}}
*/
var data = JSON.parse(stdout);
console.log(data);
}
});
直接curl出来和通过运行脚本的出来的结果是一样一样的:
3、调用传参数的shell脚本(child_process.execFile())
这个要先准备个shell脚本,比如我要连到一台服务器,来修改它的密码,则我要提供IP,user,new pwd,old pwd,新建shell脚本文件change_password.sh:
#!/bin/sh
IP=""
NAME=""
PASSWORD=""
NEWPASSWORD=""
while getopts "H:U:P:N:" arg #选项后面的冒号表示该选项需要参数
do
case $arg in
H)
IP=$OPTARG
;;
U)
NAME=$OPTARG
;;
P)
PASSWORD=$OPTARG
;;
N)
NEWPASSWORD=$OPTARG
;;
?) #当有不认识的选项的时候arg为?
echo "含有未知参数"
exit 1
;;
esac
done
#先获取userid
USERID=`/usr/bin/ipmitool -I lanplus -H $IP -U $NAME -P $PASSWORD user list | grep root | awk '{print $1}'`
# echo $USERID
#根据userid来修改密码
/usr/bin/ipmitool -I lanplus -H $IP -U $NAME -P $PASSWORD user set password $USERID $NEWPASSWORD
然后准备个nodejs文件来调用这个shell脚本,叫file_changepwd.js:
复制代码代码如下:
var callfile = require('child_process');
var ip = '1.1.1.1';
var username = 'test';
var password = 'pwd';
var newpassword = 'newpwd';
callfile.execFile('change_password.sh',['-H', ip, '-U', username, '-P', password, '-N', newpassword],null,function (err, stdout, stderr) {
callback(err, stdout, stderr);
});
看过上面的,其实调用python脚本就没什么悬念了,本质上也就是执行命令。
4、调用python脚本(python脚本本身是传参数的)
python传参数的简单说明一下:
# -*-coding:utf-8 -*-
'''
需要模块:sys
参数个数:len(sys.argv)
脚本名: sys.argv[0]
参数1: sys.argv[1]
参数2: sys.argv[2]
'''
import sys
print u"脚本名:", sys.argv[0]
for i in range(1, len(sys.argv)):#这里参数从1开始
print u"参数", i, sys.argv[i]
准备一个nodejs文件来调用这个python脚本file_python.js:
var exec = require('child_process').exec;
var arg1 = 'hello'
var arg2 = 'jzhou'
exec('python py_test.py '+ arg1+' '+arg2+' ',function(error,stdout,stderr){
if(stdout.length >1){
console.log('you offer args:',stdout);
} else {
console.log('you don't offer args');
}
if(error) {
console.info('stderr : '+stderr);
}
});
py_test.py内容如下:
# -*-coding:utf-8 -*-
import sys
print sys.argv
运行结果如下:
shell脚本和python脚本和go脚本的区别_Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例-Go语言中文社区...相关推荐
- c语言代码中调用系统命令行.sh shell脚本,linux shell system传参
C语言代码中调用命令行: 1. 使用system(" 命令行 "); -- 执行完命令行后,会返回原先C代码的位置,继续执行. 2. 如果命令行中需要传参,使用 sprin ...
- 【Groovy】闭包 Closure ( 闭包中调用 Groovy 脚本中的方法 | owner 与 delegate 区别 | 闭包中调用对象中的方法 )
文章目录 一.闭包中调用 Groovy 脚本中的方法 二.owner 与 delegate 区别 三.闭包中调用 Groovy 对象中的方法 一.闭包中调用 Groovy 脚本中的方法 在 Groov ...
- mysql workbench导入sql_MySQL Workbench 导入sql脚本-Go语言中文社区
最近一直在搞数据,数据量大了真的很头疼.特别是数据迁移,用的是insert的sql脚本. 导入数据方法一: 主页面上有这个按钮,意思是打开sql脚本.按钮如下: 点击按钮选择脚本: 选择脚本以后,打开 ...
- python语言中文社区-python解决中文
广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! python 添加中文注释时出现运行失败. 需要在顶部设置编码. # coding ...
- python语言中文社区-python语言中文
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 为了得到一个可以正常返回的 url ,需要修改示例中的 secretid ...
- python语言中文社区-Python 之父谈 Python-Go语言中文社区
在宣传海报上,Python 之父 Guido van Rossum 在 EuroPython 2015 会议的发言分为讲话稿和现场问答部分,但是他上台后将全程改为现场问答的形式.他在回答现场观众的问题 ...
- python第一周心得_python第一周心得-Go语言中文社区
Python 简介 Python 作为一个近年备受好评的语言,它的一些优点让人无法忽视.Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.它的设计具有很强的可读性,相比其他 ...
- 给 python 初学者的四条忠告_给 python 初学者的四条忠告-Go语言中文社区
1. 不要纠结于开发工具的选择,简单直接就是最好的 学习一种编程语言,首先要找一款合用的集成开发工具,似乎是自然而然的想法.为什么不呢?IDE可以自动补齐,可以一键运行,还可以断点调试.使用IDE开发 ...
- python和uipath区别_Uipath中调用Python的方法
难度等级:初学者. 这篇文章将有助于在UiPath中使用Python活动(Activity),该活动允许从UiPath调用和执行Python脚本.不仅可以执行Python脚本,还可以将参数传递给Pyt ...
最新文章
- pap和chap交叉认证
- Keras入门(一)搭建深度神经网络(DNN)解决多分类问题 1
- 读写App.config配置文件的方法
- standard_init_linux.go:178: exec user process caused no such file or directory
- oracle tranc,ORACLE TRUNC()函数
- 万年历c语言编程代码_C语言高效编程与代码优化~
- 【1】MySQL的四种事务隔离级别
- 单价数量和总价的公式_人教版四年级数学上册单价、数量和总价之间的关系微课...
- fedora中linux改成英文,Fedora的英文界面下使用中文
- 微型计算机常常采用三种线结构,中北大学微机原理习题册终极版考试必备
- IDEA 对接口进行快速测试(Create Test)
- Android之在不同的Activity之间传递数据
- google三篇重要论文(英文原文)
- 银河麒麟桌面操作系统V10 SP1 如何安装字体
- matlab最小二乘法拟合 做图像,用MatLab画图(最小二乘法做曲线拟合)
- 用计算机弹出生僻字的歌,抖音生僻字是什么歌?抖音生僻字歌词注音完整版
- 零售药店计算机操作内容培训,零售药店gsp培训计划.doc
- JAVA语言程序设计教程张席_Java语言程序设计教程
- 作为投资者,这10个对冲策略你必须烂熟于心
- webpack之打包library
热门文章
- Spring Boot jackson配置使用详解
- java自定义注解实现日志功能
- Jackson用法详解
- cairo填充_Cairo 图形指南 (5) —— 形状与填充
- js 对象和构造函数
- java 虚基类_重拾C++之虚函数和虚基类以及抽象类
- 电气工程及其自动化学不学c语言,电气工程及其自动化学什么 就业方向有哪些...
- Spring bean 不被 GC 的真正原因
- java 文件流 重写_java中关于文件流的总结
- 哲学家就餐问题python_哲学家就餐-同步问题解析-python