当前位置: 首页 > news >正文

linux退出登录脚本,Linux实现自动登录的实例讲解

使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄、收藏。可是为什么要这么写却不知其然。本文用一个最短的例子说明脚本的原理。

脚本代码如下:

#!/usr/bin/expect

set timeout 30

spawn ssh -l username 192.168.1.1

expect "password:"

send "ispass\r"

interact

1. [#!/usr/bin/expect]

这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的bash、windows下的cmd是一类东西。

注意:这一行需要在脚本的第一行。

2. [set timeout 30]

基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒

3. [spawn ssh -l username 192.168.1.1]

spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个dir.com 或 dir.exe 的可执行文件。

它主要的功能是给ssh运行进程加个壳,用来传递交互指令。

4. [expect “password:”]

这里的expect也是expect的一个内部命令,有点晕吧,expect的shell命令和内部命令是一样的,但不是一个功能,习惯就好了。这个命令的意思是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的30秒

5. [send “ispass\r”]

这里就是执行交互动作,与手工输入密码的动作等效。

温馨提示: 命令字符串结尾别忘记加上“\r”,如果出现异常等待的状态可以核查一下。

6. [interact]

执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。

以上就是本次介绍的关于Linux实现自动登录的相关实例内容,感谢大家的学习和对脚本之家的支持。

相关文章:

  • linux升级openssh提示密码错误,关于linux升级openssh须知
  • linux 无法清空大文件内容,在Linux中5种清空或清空大型文件内容的方法
  • linux 入口流控 虚拟设备,Linux下使用虚拟网卡的ingress流控(入口流控)
  • ucos运行linux文件,关于移植ucosii到windows和linux平台下的思路
  • linux strace 跟踪线程,获取线程id--strace跟踪线程系统调用
  • linux 非root进程,Linux查看非root运行的进程
  • linux下多路径dm不一致,DM多路径存储
  • linux虚拟主机管理平台,8 款顶级的虚拟主机管理系统
  • linux安装无线电软件,Uhd+GNUradio软件无线电平台在Linux系统上安装过程
  • linux主机健康检查,Zabbix监控Tengine 后端服务器健康检查
  • linux邮件查收,Linux mail命令:发送和接收电子邮件
  • 空间坐标转屏幕坐标c语言算法,线性代数——坐标系空间转换
  • openmv4可以c语言开发吗,OpenMV4开发笔记1-感光元件初始化
  • 西安邮电大学c语言期末考试题,西安邮电大学操作系统期末试卷(含答案)
  • android 本地文件读写,Android 读写文件方法汇总
  • 分享的文章《人生如棋》
  • angular2 简述
  • Angular4 模板式表单用法以及验证
  • C++入门教程(10):for 语句
  • co.js - 让异步代码同步化
  • Git学习与使用心得(1)—— 初始化
  • go append函数以及写入
  • JavaScript类型识别
  • quasar-framework cnodejs社区
  • Vue 重置组件到初始状态
  • vuex 笔记整理
  • webpack4 一点通
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 从0到1:PostCSS 插件开发最佳实践
  • 关于使用markdown的方法(引自CSDN教程)
  • 后端_ThinkPHP5
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端代码风格自动化系列(二)之Commitlint
  • 容器服务kubernetes弹性伸缩高级用法
  • 如何解决微信端直接跳WAP端
  • 深度学习中的信息论知识详解
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 新书推荐|Windows黑客编程技术详解
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 2017年360最后一道编程题
  • raise 与 raise ... from 的区别
  • 阿里云ACE认证之理解CDN技术
  • !!Dom4j 学习笔记
  • ${factoryList }后面有空格不影响
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (三) diretfbrc详解
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)Scala的“=”符号简介
  • *上位机的定义
  • .bashrc在哪里,alias妙用
  • .NET 反射 Reflect
  • .net流程开发平台的一些难点(1)