如何在linux shell脚本中自动输入密码.

2023-05-16

答案是需要通过expect 来实现。

【注意】如果没有 expect ,需要预先安装

[tony@pd2 ~]$ yum info expect
Loaded plugins: fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Loading mirror speeds from cached hostfile
Available Packages
Name        : expect
Arch        : x86_64
Version     : 5.45
Release     : 14.el7_1
Size        : 262 k
Repo        : base/7/x86_64
Summary     : A program-script interaction and testing utility
URL         : http://expect.nist.gov/
License     : Public Domain
Description : Expect is a tcl application for automating and testing
            : interactive applications such as telnet, ftp, passwd, fsck,
            : rlogin, tip, etc. Expect makes it easy for a script to
            : control another program and interact with it.
            : 
            : This package contains expect and some scripts that use it.

[tony@pd2 ~]$ whereis expect
expect:
[tony@pd2 ~]$

# 必须以root用户安装 expect
[root@pd2 tony]# whereis expect
[root@pd2 tony]# yum install -y expect

[root@pd2 kevin]# whereis expect
expect: /usr/bin/expect /usr/share/man/man1/expect.1.gz

-----------
# 写一个自动输入密码的脚本
[tony@pd2 ~]$ cat change2kevin 
#!/usr/bin/expect
# 不论是在此脚本内自动输入密码还是在脚本外手工输入密码,至少要等待1秒
set timeout 1

# spawn将开启一个新的进程,也可以是ssh $user@$host {your_command}
# 只有先进入expect环境后才可执行spawn
spawn su kevin

# 判断上述进程(su kevin)的输出结果中是否有“password”的字符串(不区分大小写)。
# 若有则立即返回,否则就等待一段时间后返回,等待时长就是开头设置的1秒

expect "*password:"
# 向上面的进程(su kevin)发送字符串中的密码, 并且自动敲Enter健(\r)
send "kevin123456\r"
interact

---------------

# 验证一下, 从当前的 tony 用户切换到 kevin用户
[tony@pd2 ~]$ ./change2kevin 
spawn su kevin
Password: 
[kevin@pd2 kevin]$

成功切换用户!

另外,如果临时需要从本地通过ssh登录到远程机器的需求,也可以写一个类似的脚本:

[tony@pd2 ~]$ cat to_pd4.sh

#!/usr/bin/expect
set timeout 1
spawn ssh tony@pd4
send "yes\r"
expect "*password:"
send "hello\r"
interact

[tony@pd2 ~]$ ./to_pd4.sh    # 测试一下
spawn ssh tony@pd4
yes
tony@pd4's password: 
Last login: Thu Apr  9 17:45:41 2020 from bd01
[tony@pd4 ~]$ 

从结果可知,无需手动输入ssh密码,成功登入远程机器 ^_^

 

【扩展】如何实现“输入用户名kevin,则自动切换到用户kevin?”

[tony@pd2 ~]$ vim ~/.bashrc     # 编辑当前用户的bashrc脚本,在里面添加一行:alias kevin="./change2kevin"

[tony@pd2 ~]$ grep "alias kevin=" ~/.bashrc 

alias kevin="./change2kevin"

[tony@pd2 ~]$ source ~/.bashrc
[tony@pd2 ~]$ kevin        #  直接使用刚才在bashrc中自定义的别名kevin,就能切换到kevin用户
spawn su kevin
Password: 
[kevin@pd2 liangpeng]$ whoami

kevin

好了,就写到这里,看官们觉得涨知识了,请为本文点个赞 ^_^

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在linux shell脚本中自动输入密码. 的相关文章

  • 计算器算法----C语言实现(堆栈法)

    1 字符串去空格处理 实现一 xff1a span class hljs keyword void span spacess span class hljs keyword char span span class hljs keyword
  • 链接脚本

    本文转自 xff1a http www cnblogs com li hao p 4107964 html 一 概论 每一个链接过程都由 链接脚本 linker script 一般以lds作为文件的后缀名 控制 链接脚本 主要用于规定如何把
  • 记录2017/9/7趋势科技笔试题

    1 下面程序一共会在屏幕上输出多少个 xff1f include lt iostream gt include lt stdio h gt include lt sys types h gt include lt unistd h gt u
  • 字节对齐算法

    ps xff1a 遇见这种算法纯属一个巧合 xff0c 刚入职的我 xff0c 在忙着调用各种SDK中的API xff0c 无暇顾及代码的具体实现 xff0c 有些代码还被屏蔽了 xff0c 在写flash的过程中 xff0c 参考了前辈们
  • UCOSIII学习笔记

    目录 1 学习环境 2 滴答定时器 3 任务 3 1 UCOSIII系统任务 3 2 UCOSIII任务状态 3 3 UCOSIII任务调度 3 4 任务相关的API函数 3 5 钩子函数 4 UCOSIII的中断 5 UCOSIII的临界
  • QCC5125----GAIA

    1 描述 GAIA全称 xff1a Generic Application Interface Architecture xff0c 实现了端到端 xff0c 主机无关的生态系统 xff0c 支持主机应用程序访问设备功能 底层的数据包由8个
  • 【SQLserver】使用openrowset方法导入EXCEL表格数据

    一 前言 在之前的一篇博文中记录了用OPENDATASOURCE函数将EXCEL数据写入SQLserver表中的方法 这一方法需要表名sheet1为固定名称不可更改 实际业务中可能会遇到表名随着日期而改动的情况 xff0c 如果excel表
  • PDM

    PDM Pulse Density Modulation 1 Protocols Introduction1 1 PDM Introduction1 2 PCM Introduction1 3 PDM To PCM 2 PDM Struct
  • FreeRTOS --(1)链表

    Based On FreeRTOS Kernel V10 3 1 1 相关文件 链表结构是 OS 内部经常使用到的 xff0c FreeRTOS 自然也不例外 xff0c 在深入分析各个模块的工作原理之前 xff0c 首先来分析 FreeR
  • FreeRTOS --(3)任务管理之创建任务

    目录 1 描述任务的结构 2 任务创建 2 1 xTaskCreate 2 2 prvInitialiseNewTask 2 3 pxPortInitialiseStack 2 4 prvAddNewTaskToReadyList 在 Fr
  • FreeRTOS --(9)信号量之概述

    目录 1 Binary Semaphores 1 1 Usage 1 2 APIs 1 2 1 xSemaphoreCreateBinary 1 2 2 xSemaphoreTake xSemaphoreTakeFromISR 1 2 3
  • FreeRTOS --(11)资源管理之临界区

    目录 1 taskENTER CRITICAL 2 vTaskSuspendAll 3 Mutexes 3 1 Usage 临界区的概念在任何的 SoC 都存在 xff0c 比如 xff0c 针对一个寄存器 xff0c 基本操作为 xff1
  • MIPI 打怪升级之DCS篇

    目录 1 Overview2 Display Architectures2 1 The Type 1 Display Architecture 3 Power Level3 1 Type 1 Display Architecture Pow
  • MIPI 打怪升级之DPI篇

    目录 1 Overview2 Display Architectures2 1 Type 1 Display Architecture Block Diagram2 2 Type 2 Display Architecture Block D
  • MIPI 打怪升级之DBI篇

    目录 1 Overview2 Display Architectures2 1 Type 1 Display Architecture Block Diagram2 2 Type 2 Display Architecture Block D
  • 还不会华为交换机如何恢复出厂设置的,看这里

    哎呀 xff01 看错了 xff0c 我把三层交换机的配置写到二层交换机了 xff0c 其他的配置可都是好好的 xff0c 不会又要让我重新来一遍吧 xff01 小曼自从上次败北之后就开始研究起网络通信了 xff0c 没想到做个仿真实验还得
  • 基于stm32与NRF24L01的无线门禁系统

    首先 xff0c 需要说明梁只是一个小本科生 xff0c 水平不高 xff0c 许多错误请大家指教 xff08 qq1257681989 xff09 所写的内容是我自己做的 xff0c 写此博客仅在于让自己在完成之后有个回顾和总结 进入正文
  • 2016TI杯——寻迹小车

    首先 xff0c 我选择的是B题 自动循迹小车 xff0c 具体如下 xff1a B题 xff1a 自动循迹小车 1 xff0e 任务 设计制作一个自动循迹小车 小车采用一片 TI公司LDC1314或LDC1000电感数字转换器作为循迹传感
  • C语言小函数——删除字符串str1中含有的字符串str2

    本函数实现的是删除str1中的含有的所有str2 char span class hljs variable delstr span char span class hljs variable src span const char spa
  • 设备树简介

    设备树简介 一 xff1a 设备树由来 linux内核源码中 xff0c 之前充斥着大量的平台相关 xff08 platform Device xff09 配置 xff0c 而这些代码大多是杂乱且重复的 xff0c 这使得ARM体系结构的代

随机推荐

  • NVIDIA TX2上手体验

    NVIDIA TX2上手体验 硬件基础刷机流程远程登陆CAN总线调试回环模式硬件测试 硬件基础 新入手Nvidia TX2开发套件 xff0c 准备安装ubuntu16 04 xff0c 对应jetpack3 3版本 刷机流程 首先你要有一
  • 解决Pixhawk启动解锁过程中出现一些问题

    硬件 xff1a pixhawk2 4 6 固件 xff1a PX4 1 6 4 平台 xff1a linux qgroundcontrol 问题 xff1a 解锁过程中提示 Flying with usb is not safe xff0
  • 使用无线数传 radio telemetry 连接pixhawk进入offboard模式进行mavlink协议通讯的尝试

    环境 xff1a Windows电脑一台 Linux电脑一台 Radio telemetry 收发两端 Pixhawk 2 4 6飞控 USB micro 连接线 软件 xff1a PX4固件 QGroundcontrol 地面站 mavl
  • ROS学习笔记(四)ros 无法rosdep init 或者update解决方法

    如果提示的是 ERROR unable to process source https raw githubusercontent com ros rosdistro master rosdep xxxxx 之类的错误 xff0c 同时保证
  • ROS学习笔记(十二)ROS noetic ubuntu20.04 版本 rosdep init,rosdep update 问题解决方法

    ROS1 noetic 版本在ubuntu20 04安装出现问题 xff0c rosdep update无法下载 xff0c 网络地址访问超时 ROS1 noetic 版本在ubuntu20 04系统上的安装方法见博客 xff1a Ubun
  • FreeRTOS之xTaskCreate()

    xTaskCreate 函数解析 task span class token punctuation span h BaseType t span class token function xTaskCreate span span cla
  • 解决笔记本双USB接口散热器无法给其他外接设备供电的问题

    问题描述 xff1a 有个双usb接口的笔记本散热器 xff0c 之前是散热器接笔记本的一个usb接口 xff0c 连接到散热器的一个USB接口上 xff0c 散热器上的另一个usb接口可以连其他设备 xff0c 比如外界键盘 出现了问题
  • FreeRTOS之vTaskDelete()

    vTaskDelete 函数解析 task span class token punctuation span h span class token keyword void span span class token function v
  • MobaXterm连接不上虚拟机linux的问题

    目录 问题描述 xff1a step1 进入centOS下的 etc sysconfig network scripts step2 输入命令vi ifcfg ens33 查看并编辑该文件 step3 将文件中的 step4 重启网络服务
  • Linux LVM root分区 磁盘扩容

    LVM 的基本概念 物理卷 Physical Volume PV xff1a 可以在上面建立卷组的媒介 xff0c 可以是硬盘分区 xff0c 也可以是硬盘本身或者 回环文件 xff08 loopback file xff09 物理卷包括一
  • 浅尝树莓派3之串口配置

    树莓派3硬件串口的使用及编程 发表于 2017 01 29 分类于 树莓派 暂无评论 阅读次数 54 引言 本文转载自 xff1a http etrd org 2017 01 29 E6 A0 91 E8 8E 93 E6 B4 BE3 E
  • Android开发必备——注解

    前言 阅读官方源码以及各类第三方框架时可以发现 xff0c 很多地方都有注解 xff0c 作为一名Android程序员 xff0c 掌握注解属于必不可少的一项技能 1 什么是注解 注解是以 64 符号开头的用来标识如类 字段 方法等的工具
  • ROS 'catkin_make' 命令出错

    之前 xff0c 我在自己的电脑上 xff08 新安装的ubuntu16 04 xff09 装好了ROS xff0c 用catkin make编译成功了 xff0c 但是用一样的方法在实验室的电脑上编译就报错 xff0c 后来发现和之前装过
  • PX4 里面的TCP服务端代码

    PX4 里面的TCP服务端代码 span class token comment examples nettest nettest server c Copyright C 2007 2011 2012 Gregory Nutt All r
  • 传感器研究NO1.陀螺仪

    一 陀螺仪重要参数 如下图所示 xff0c 一般陀螺仪手册具有很多参数 xff0c 此处仅记录软件编程应注意的参数 Full Scale Range xff08 量程 xff09 xff1a dps xff08 Degree Per Sec
  • ESP8266与电脑PC端TCP通讯步骤+例子一

    我们先讲 xff0c 拿到一个ESP8266模块之后 xff0c 该做什么 我拿到这个模块之后 xff0c 一脸蒙蔽 xff0c 我不知道怎么使用 xff0c 这个时候 xff0c 不要慌 xff0c 去看技术手册 我4步让你学会最简单的使
  • 读java编程思想的一点感触

    学习一些java基础语法后 xff0c 能应付简单的日常工作 但是觉得还是得系统学习一下这门语言 xff0c 就选择了java编程思想 原书第4版 xff0c 机械工业出版社 xff0c 陈昊鹏译的这本 看懂的不是很多 xff0c 还是学到
  • linux---UDP代码通信

    udp连接特性 xff1a 无连接 xff1a 可以不构成连接就进行通信不可靠 xff1a 数据并不能保证可靠性面向数据报 xff1a 每条数据有长度限制 xff0c 整条数据发送整条数据接受 xff0c 传输不灵活 xff0c 但是不会存
  • virtualBox安装debian9.5的网络配置杂记

    2019 02 01补充 桥接模式设置方式 1 虚拟机界面 gt 设备 gt 网络 gt 网络 gt 网卡1 gt 桥接网卡 2 连接虚拟机 xff0c 为虚拟机配置一个ip地址即可 ip a add 192 168 0 107 24 de
  • 如何在linux shell脚本中自动输入密码.

    答案是需要通过expect 来实现 注意 如果没有 expect xff0c 需要预先安装 tony 64 pd2 yum info expect Loaded plugins fastestmirror Repodata is over