首页 > 编程知识 正文

macos系统,跳板机上网络连接

时间:2023-05-05 07:05:10 阅读:111689 作者:4301

采用了expect

然后,编写自动登录到板计算机的脚本。

1 .首先安装expect brew install expect

expect是一种免费的编程工具,无需人干预就能实现自动的交互式任务。 简言之,expect是一组用于实现自动交互功能的软件。

在实际工作中,执行命令、脚本或程序时,这些命令、脚本或程序需要从终端输入继续执行的命令。 这些输入必须人工手动进行。 在expect中,根据程序的指示,通过模拟标准输入并提供给程序,可以自动化对话的执行。 这就是expect!

send用于向进程发送字符串

expect从进程接收字符串

spawn将开始一个新过程

interact允许您与用户交互

send命令接收字符串参数并将其发送到进程。expect命令与send命令相反,expect通常用于等待进程的反馈,并根据进程的反馈发送相应的交互式命令。spawn命令用于启动新进程,spawn后的send和expect命令与在spawn中打开的进程交互。interact命令实际上很少使用。 通常,使用spawn、send和expect命令可以很好地完成我们的任务。 但是,在一些特殊情况下,必须使用interact命令。 interact命令主要用于退出自动化并手动交互。 例如,使用spawn、send和expect命令完成了ftp登录主机并执行了文件下载任务,但在文件下载完成后仍保留ftp命令行,并保留后续命令在这种情况下,可以使用interact命令很好地执行此任务。

2 .编辑shell脚本autologin.sh

#! /usr/清秀的行人/expectset timeout -1set password登录密码spawn sudo ssh用户名@ip地址expect ' * password 3360 * ' send ' $ password

#! /usr/tcl/清秀的行人/expect :

使用expect解释脚本;

set timeout 30 :

设定超时时间(以秒为单位)。 默认值为10秒。

设置主机' 101.200.241.109 ' :

设定变量;

spawn ssh$ username @$ host:spawn

进入expect环境后可以执行的expect内部命令,如果未安装expect或直接在缺省shell下运行,则找不到spawn命令。 主要功能是向ssh运行进程添加shell并传递交互式命令。

expect '*password* ' :

这里的expect也是expect的内部命令,该命令表示判断上次输出结果中是否包含" password "字符串,如果有,则立即返回; 否则,我等一会儿再回来。 这里的等待时间是之前设定的30秒。

send '$passwordr ' :

如果匹配相应的输出结果,则将密码发送到打开的ssh进程并执行交互式操作;

interact :

运行完成后保持交互式状态,并将控制权传递给控制台。 此时可以手动操作。 如果没有这一句话,登录完成后退出,而不是留在远程终端上。

这是对上述简单脚本的分析,在上面的示例中,它与expect中非常重要的概念——模式-操作相关联。 这意味着上述expect ' * password * ' { send ' $ passwordr ' }代码所表示的含义。

3 .将shell放在任意目录中,软连接到/usr/清秀行人目录,如ln -s目录/autologin.sh /usr/清秀行人/autologin

然后,相应的命令: autologin将启用自动登录。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。