平时在控制台输入指令如:sudo、ssh、ftp或者修改admin权限的文件时候都会要求输入password,但是在she’ll脚本运行过程中该如何交互实现自动输入密码呢?

下面总结三种实现方法。

一、重定向:用重定向方法实现交互的前提是指令需要有参数来指定密码输入方式,如ftp就有-i参数来指定使用标准输入来输入密码
shell用重定向作为标准输入的用法是:cmd<<delimiter ,shell 会将分界符delimiter之后直到下一个同样的分界符之前的内容作为输入

实现ftp自动登录并运行ls指令的用法如下:其中zjk为用户名,zjk123为密码

ftp -i -n 192.168.21.46 <<EOF
user zjk zjk123
ls
EOF

二:管道:跟重定向一样,指令同样要有参数来指定密码输入方式,如sudo的-S参数,passwd的-stdin参数
所以实现sudo自动输入密码的脚本如下:其中zjk123为密码

  echo 'zjk123' | sudo -S cp file1 /etc/hosts实现自动修改密码的脚本写法如下:echo 'password' | passwd -stdin username

三:expect:上面介绍的两种方法前提条件是指令有参数来设定密码输入方式,像ssh指令就没有这样的参数,第三种交互方式就派上用场了

   expect就是用来做交互用的,基本任何交互登录的场合都能使用,但是需要安装expect包

安装except

 sudo apt-get install tcl tk expect

语法如下:

#!/usr/bin/expect
set timeout 30
spawn ssh -l jikuan.zjk 10.125.25.189
expect "password:"
send "zjk123\r"  #\r是回车
interact

注意:expect跟bash类似,使用时要先登录到expect,所以首行要指定使用expect
在运行脚本时候要expect file,不能sh file了

上面语句第一句是设定超时时间为30s,spawn是expect的语句,执行命令前都要加这句

expect "password:"这句意思是交互获取是否返回password:关键字,因为在执行ssh时会返回输入password的提示:jikuan.zjk@10.125.25.189’s password:

send就是将密码zjk123发送过去

interact代表执行完留在远程控制台,不加这句执行完后返回本地控制台

本文来自 zhangjikuan 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/zhangjikuan/article/details/51105166?utm_source=copy

shell脚本输入密码相关推荐

  1. linux expect 输入密码,shell脚本无密码登录 expect的使用方法详解

    shell脚本无密码登录 expect的使用方法详解 今天需要做一个定时任务脚本将最新的数据包文件传到远程的服务器上,虽然有密钥但也是要求输入密码的那种,所以只能另想办法实现让脚本自动输入密码了. 从 ...

  2. 【Linux】30.ssh不用手动输入密码登录终端sshpass 和 shell脚本后跟参数自动匹配case的用法

    ssh不用手动输入密码登录终端sshpass 和 case的组合用法 1.sshpass 的用法 在第一次手动输入密码ssh mdc@172.16.34.17 登陆上终端后,可以把下面两条语句做成sh ...

  3. Shell脚本交互:自动输入密码

    Shell脚本交互:自动输入密码 平时在控制台输入指令如:sudo.ssh.ftp或者修改admin权限的文件时候都会要求输入password,但是在she'll脚本运行过程中该如何交互实现自动输入密 ...

  4. 【Shell】Shell 脚本自动输入密码的三种方式

    Shell 脚本自动输入密码的三种方式 注意,如果创建.sh文件后不可以执行,请执行sudo chmod 755 文件名.sh来修改权限. 方式一 使用 echo "密码" | ( ...

  5. Linux下shell自动输入密码,shell脚本通过expect脚本实现自动输入密码

    背景:在远程文件下载时,需要输入对方的服务器密码,shell不支持交互输入内容,可以用下面两种方式实现 一.在shell脚本中嵌入expect来实现密码输入 expect是一个自动交互功能的工具.ex ...

  6. linux 界面自动输入密码,Linux中shell脚本如何自动输入密码

    shell脚本在处理自动循环或大的任务方面可节省大量的时间,通过创建一个处理任务的命令清单,使用变量.条件.算术和循环等方法快速创建脚本以完成相应工作,这比在命令行下一个个敲入命令要省时省力得多. 但 ...

  7. 如何在脚本中输入密码 linux,如何在shell脚本中为用户分配密码

    本篇文章给大家介绍的内容是关于如何在shell脚本中为用户分配密码,下面我们来看具体的内容. 我们先来看一下命令echo | passwd –stdin 例如: 使用以下命令更改shell脚本中用户j ...

  8. ubuntu/linux运行shell脚本sudo自动输入密码(亲测可以)

    运行如下代码为例 sudo apt-get update 第一种方法 使用管道(上一个命令的 stdout 接到下一个命令的 stdin): #!/bin/bash echo yourpassword ...

  9. Shell脚本基础介绍

    shell基础简介: 编写脚本通常使用某种基于解释器的编程语言.而shell脚本不过就是一些文件,我们能将一系列需要执行的命令写入其中,然后通过shell来执行这些脚本. 进入Linux系统(Ubun ...

最新文章

  1. novaclient的api调用流程与开发
  2. 难搞的偏向锁终于要被Java移除了
  3. 依赖倒置(DIP),控制反转(IoC)与依赖注入(DI)
  4. 白话Elasticsearch13-深度探秘搜索技术之基于multi_match+most fields策略进行multi-field搜索
  5. #地形剖面图_高中地理——每日讲1题(地形剖面图、河流水的补给、河流丁坝)...
  6. php的cgi的设置,apache中配置php支持模块模式、cgi模式和fastcgi模式
  7. cassandra 3.x官方文档(5)---探测器
  8. [codeup 2134] FatMouse's Trade
  9. Python入门学习—元组/字符串(FishC)
  10. vs2017安装qt插件及安装qt插件后的设置
  11. ARM架构下常用GNU汇编程序伪指令介绍(Assembler Directive)
  12. Android字体加粗,UI小姐姐说太粗了,解决办法
  13. 苹果6s速度有多快?
  14. 独立版旺店助手源码在线持续更新
  15. php简易留言板功能,PHP实现简单留言板功能的方法
  16. 开机脚本之——鼠标滚轮调整音量
  17. 基于Java——SpringBoot的洗浴会所管理系统
  18. 网络安全学习查询黑客
  19. MATLAB2020a simulink 工具栏显示空白
  20. 云服务器加固系统,服务器加固系统

热门文章

  1. 洛谷-5149 会议座位
  2. 骁龙778gplus什么水平 骁龙778gplus什么级别 骁龙778gplus相当于什么档次
  3. ubuntu程序莫名崩溃显示killed,程序闪退,排除OOM
  4. 量化投资 -- 技术篇(6)投资组合策略性能评价(上)
  5. 无忧·企业文档自助配置完成单点登录配置,对接企业原有组织架构
  6. Asp.Net 上传图片并生成高清晰缩略图
  7. 微软的surface pro5充电指示灯亮,但充不进去电的原因
  8. linux硬件之磁盘运行读写原理
  9. 硬盘提示格式化的解决办法:
  10. 数学速算法_简单易学的速算法,贴墙上背,孩子次次数学100分!