![将文本文件的内容发送到终端窗口的代码](https://linux22.com/image/983317/%E5%B0%86%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E7%9A%84%E5%86%85%E5%AE%B9%E5%8F%91%E9%80%81%E5%88%B0%E7%BB%88%E7%AB%AF%E7%AA%97%E5%8F%A3%E7%9A%84%E4%BB%A3%E7%A0%81.png)
我正在寻找一些代码,能够通过按下按钮或通过在终端中输入别名将文本文件的内容发送到终端窗口。如果我解释一下我想做什么,会更清楚。
我使用 ubuntu 机器来管理一些设备,目前我已经设置好了,当我输入别名(例如 equipment1)时,它会自动通过 SSH 进入 equipment1。它还会发送一个密码,让我无需输入密码即可登录。问题是这个设备需要第二个密码才能进入高权限级别。使用第一个密码登录后,它会显示一个 OK 按钮,其中的文本显示了第二个密码,我必须将其复制并粘贴到终端中才能进入更高级别。
我需要一些代码,这些代码会自动读取包含一些代码和第二个密码的文本文件的内容,并自动将其发送到终端窗口,这样我就不必从按钮文本中剪切和粘贴它。我不介意它在我单击“确定”按钮时执行,但我希望它运行代码以登录设备而不将其显示在屏幕上。
困难的是,当我第一次登录设备时,我无法访问终端代码,因为我通过 SSH 进入设备,所以它必须能够从别名中一次性运行。
希望这些信息足以让某人了解我正在做什么并帮助我。
非常感谢大家的帮助。谢谢阅读。
答案1
存储密码通常是错误的ssh
. 出于显而易见的原因,通过存储用户密码~/.bashrc
(和/或命令历史记录)进行登录并不安全;人们也许可以使用ssh
密钥来代替,正如 lemonslice 在评论中所建议的那样。
但是,如果这是您想要遵循的路径,只需将密码传递给命令ssh
;使用echo
该-e
选项将转义转义序列,例如\n
允许您伪造Return按键甚至经历多个提示:
echo -ne 'password\n' | ssh user@host
user@debian ~ % echo -ne 'password1\n' | ssh user@localhost
Pseudo-terminal will not be allocated because stdin is not a terminal.
user@localhost's password:
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
zsh: command not found: password1
user@debian ~ % echo -ne 'password1\npassword2\npassword3\n' | ssh user@localhost
Pseudo-terminal will not be allocated because stdin is not a terminal.
user@localhost's password:
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
zsh: command not found: password1
zsh: command not found: password2
zsh: command not found: password3