本帖最后由 长江黄河cc 于 2017-11-27 19:46 编辑
最近一直在玩Nanopi Duo,刚开始一直使用的是串口登入的,就上次那个Musicbox因为串口找了好久才发现用串口是没有用的,所以最近就转到虚拟机里面来,但是在虚拟机里面每次登入都要输入IP地址和登入密码非常的麻烦不方便,有时候还会输错。所以想着能不能写一个脚本来解决这个问题,说做就来。因为笔者是小白所以对脚本不太了解,然后就百度走起。 网上资料那是一个丰富啊!都不知道从哪里开始看了,但看多了总有收获的。 1、首先你必须创建一个脚本文件它是.sh后缀的如“***” 2、进到脚本文件里面,首行加上 #!/bin/sh 声明这个文件是脚本,要执行的。 3、在下面写自己需要的具体操作。比如:cd /var/opt/ 等等。 4、需要把脚本编译一下,才能执行。很简单,打开终端,输入chmod +x filename 5、点击就可以运行了 可能介绍的不够详细,毕竟是小白。下面就直接上登入ssh的过程好了, 在虚拟机桌面建一个脚本文件.sh就可以,然后在里面编写你的程序就好了,
- #!/usr/bin/expect
- set timeout -1
- spawn ssh root@192.168.1.121
- expect "*assword:*"
- send "密码r"
- interact
复制代码
就是这么简单,在虚拟机终端输入“./Zero.sh”就可以自动登入了 不过还是要介绍一下里面的函数如下: 第一行:主要用于指明expect执行路径,由于登录类的脚本本质上是由expect解释执行,所以第一行需要指明expect的路径。(笔者也不是太懂这个expect,希望有大佬详解) 第二行:用于设置超时时间,设置值为-1代表不超时 第三行:用spawn来执行你要执行的shell命令,也就是你每次要输入的IP地址 第四行:使用expect来匹配执行shell命令的返回值中的关键字assword:,即需要知道执行shell之后等待输入密码的那行语句,超时时间即第二行设置的时间 第五行:使用send将第三行设置的密码自动填充到terminal,实现登录功能 第六行:使用interact退出expect环境,返回terminal界面,实现登录成功之后再输入,如不使用interact则会停留在expect环境中,而无法进如终端
说明一下:ubuntu expect 安装:sudo apt-get install expect
总结:小白的道路永远是艰辛的,一个登入脚本弄了一个上午,不过最终解决了那就非常的开心,以后登入那就非常方便了,电子道路任重道远啊!!!!!
|