- 30
- 0
问题如下:
1.使用stream.on('data',(data)=>{do sth})这种风格时,data的值是每一行命令行的值,并不断刷新触发回调函数,我需要拿到不止一行的值才可以判断逻辑,怎么样才能拿到不止一行的值呢?比如键入一次stream.write('dis cur\r')(一条查询目标设备所有端口信息的指令,输出上百行信息)后,stream.on('data',(data)=>{do sth})是把这上百行信息中的每一行都传到data并触发回调函数。
2.上一个问题的进阶,我需要写一连串的逻辑,根据命令行返回值的不同进行下一步键入命令。
比如:stream.write('ssh 172.xx.xx.xx@xxx -p 22')(在跳板服务器上连接目标设备)
之后有2种情况:
情况一:初次登陆,会提示含有'authentication'单词的数行信息,此时我需要stream.write('yesr')才能继续。
情况二:非初次登陆,会提示含有'password'单词的数行信息,此时我需要stream.write('mypasswordr')才能继续。
这样的判断会有很多,根据键入命令后的data来进行判断。然后获取data的风格,在node.js的stream说明文档上并没有很详细的例子,请问我需要怎么写才能实现这种顺序逻辑判断呢?
附上目前的代码:
stream.on('data',function(data) {
if (data.toString().search('authenticity') > 0) {
stream.write('yes\r');
} else {
if (data.toString().search('Password') !== -1) {
stream.write('mypassword\r');
} else {
if (data.toString().search('login time') !== -1) {
stream.write('screen-length 0 temporary\r')
stream.write('dis cur int Eth-Trunk2.7006 \r')//查询端口信息
} else {
if (data.toString().search('shutdown') !== -1) {
console.log('Bras下联口问题')
} else{
if(data.toString().search('shutdown') !== -1){
}
}
}
}
}
console.log(''+data);
}).write('ssh -c 3des-cbc xx@xx.xx.xxxx.xxxx -p 22\r');
现在的代码是对每一行的data都进行判断,但是这样会不断触发回调函数,所以接下来键入命令的逻辑感觉不应该写在这里,如果写在下面的话,我也不知道怎样才能解决问题1或者2的问题。
0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 10 元积分
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
