关于 shell、terminal 理解不清楚

2022-08-17 10:49:21 +08:00
 cheneydog
使用 nodejs ,主要使用 process 和 child_process 包下的东西。
1. 我想做一个类似 sshpass 的功能的东西。把 ssh 调起来,模拟输入密码。
-? ssh 需要额外添加 -T 参数,不是很明白。
-?密码总是返回错误,我确认密码是对的。

2. 我想调起来 docker -it 的交互形式。
docker -i 可以交互,但是所有命令都不认。
docker -t 调不起来。the input device is not a TTY
1098 次点击
所在节点    问与答
4 条回复
julyclyde
2022-08-17 12:22:38 +08:00
shell 和 terminal 没啥关系啊。你如果说 tty 和 terminal 分不清还情有可原
julyclyde
2022-08-17 12:23:58 +08:00
ssh 读密码的时候是读取 /dev/tty 设备的,这样才能做到只按键盘但是不显示在屏幕上
你如果要模拟这个,就需要做一个 pty (虚拟 tty )让 ssh 运行在里面
apake
2022-08-17 12:32:11 +08:00
shell 是用户进程,terminal/tty/pty 是虚拟出来的可读写的硬件设备。 shell 读写 terminal ,从 terminal 里读的内容是人输入进去的。
cheneydog
2022-08-17 19:29:47 +08:00
找了个库,造假 pty ,解决了。
https://www.npmjs.com/package/node-pty

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/873395

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX