假设当前nodejs要运行命令rm -rf 123.txt
,那么代码就是
process.exec('rm -rf 123.txx',function (error, stdout, stderr) {
if (error !== null) {
console.log('exec error: ' + error);
}else {
console.log(stdout)
}
});
OK,这里确实删除了。但是如果加上sudo呢?比如sudo rm -rf 123.txt
,需要输入密码才能删除。下面是我尝试的办法,但是无法删除:
process.exec('sudo rm -rf 123',function (error, stdout, stderr) {
if (error !== null) {
console.log('exec error: ' + error);
}else {
process.exec('密码',function (error, stdout, stderr) {
if (error !== null) {
console.log('exec error: ' + error);
}else {
console.log(stdout)
}
});
console.log(stdout)
}
});
这是我尝试嵌套process.exec来解决,但是发现无法解决。
上面是个例子,实际项目中我需要使用nodejs来调用python或者其他脚本。
比如xxx.py
,在实际终端下他是这样的:
test@test:~/$ python xxx.py
info:xxxxxxx
请问是否继续么?(Y or N):Y
sys_info:xxxxx
请问是否退出?(Y or N):N
log_info:xxxxx
test@test:~/$
如果nodejs调用的话,该怎么办,怎么让提示信息为请问是否继续么?(Y or N):
时自动输入Y,并回车继续向下执行。当提示信息为请问是否退出?(Y or N):
时,自动输入N,然后回车运行。
sudo
指令有個-S
選項,用於在需要輸入密碼的時候,讀取密碼。假設密碼為
111111
,那麼,完整指令如下對應的,node程式碼可以這樣
stackoverflow
由於sudo索取密碼的輸出沒有沖刷緩衝區,node的data沒有被觸發,所以下面的程式碼不能工作),那麼理論上類似這一段的程式碼可以工作
sys.stdin.flash