linux自动点击软件上的按钮有什么用,教会你Linux Shell自动交互的三种方法
你了解Linux系统么?你是Linux系统的应用者么?如果你要学习linux,你可能会遇到Linux Shell自动交互问题,这里将介绍Linux Shell自动交互的解决方法,在这里拿出来和大家分享一下。
一、背景
shell脚本在处理自动循环或大的任务方面可节省大量的时间,通过创建一个处理任务的命令清单,使用变量、条件、算术和循环等方法快速创建脚本以完成相应工作,这比在命令行下一个个敲入命令要省时省力得多。
但是有时候我们可能会需要实现和交互程序如ftp,telnet服务器等进行交互的功能,这时候我们需要用到shell的自动交互功能,本文收集了较常用的三种自动交互方法,并进行了比较和总结。
二、需求
需求1:
从一台Linux机器ftp登陆到另一台Linux机器,进行系列操作后关闭,懒得每次都手动输入密码。
需求2:
改变登录用户密码,懒得每次都输入新旧密码。
需求3:
希望su自动登录到root账户,懒得每次都输入root密码。
三、调试环境
终端:SecureCRT
系统:WinXP, CentOS 4.4(VmWare)
Shell:bash
注:shell有很多种,B类SHELL(sh, bash, ksh)之间行为相近;C类SHELL(csh, tcsh)之间行为相近,还有zsh和rc等shell,本文的调试环境是bash。
四、自动交互方法一
自动交互最关键的就是交互信息的自动输入,首先联想到文件重定向,在shell编程中有这样一种用法(参考Linux与UNIX SHELL编程指南 chapt 5.7):"command << delimiter 从标准输入中读入,直至遇到delimiter分界符。"
重定向操作符command << delimiter是一种非常有用的命令,shell将分界符delimiter之后直至下一个同样的分界符之前的所有内容都作为输入,遇到下一个分界符, shell就知道输入结束了。最常见的delimiter分界符是EOF,当然完全可以自定为其他字符。
对于需求1 要求的自动登陆ftp,并作系列操作,则可以用这种方法进行自动交互。代码如下:#!/bin/bash
ftp -i -n 192.168.167.187 <
user hzc 123456
pwd
cd test
pwd
close
bye
EOF
测试可以发现,如上代码使用帐号名hzc,密码123456成功登陆了ftp服务器,并进入目录,打印出了pwd。
五、自动交互方法二
需求2中要求采用非交互的方式改变登录用户密码,尝试用方法1,无法实现。
这时候联想到交互信息的另一个自动输入方法,管道,通过echo + sleep + | 可以实现这个需求。#!/bin/bash
(echo "curpassword"
sleep 1
echo "newpassword"
sleep 1
echo "newpassword")|passwd
测试通过,运行这个脚本,直接把当前用户的curpassword改成newpassword。
六、自动交互方法三
需求3中要求自动登录root账号,尝试方法1和方法2,都出现错误提示standard in must be a tty。
这时候尝试寻找外部帮助,一个shell工具expect可以实现这个功能,其实expect就是一个专门用来实现自动交互功能的工具,expect的语法可以参考相关资料,代码如下:#!/usr/bin/expect
spawn su root
expect "password: "
send "123456\r"
expect eof
exit
测试通过,运行这个脚本,直接从当前用户登录到root用户。
七、方法总结
方法一(重定向)简单直观,也经常有实际应用,但是在自动交互领域功能有限。
方法二(管道)也很简单直观,有时甚至不用sleep配合就能展现强大的自动交互实力,但是在某些时候也束手无策。
方法三(expect)在功能上是最为强大的,expect本来就是为实现自动交互功能而生,但是缺点是需要安装expect包,在嵌入式等环境下难以安装。
三个方法各有优劣,应用的好,都可以完成Linux Shell自动交互。
linux自动点击软件上的按钮有什么用,教会你Linux Shell自动交互的三种方法相关推荐
- linux自动点击软件上的按钮,如何在Gnome Shell上自动启动程序
原标题:如何在Gnome Shell上自动启动程序 登录Gnome Shell时自动打开应用程序是提前设置工作区的好方法.在Gnome Shell上自动启动程序的最简单方法是使用Tweaks应用程序. ...
- 教会你Linux Shell自动交互的三种方法
你了解Linux系统么?你是Linux系统的应用者么?如果你要学习linux,你可能会遇到Linux Shell自动交互问题,这里将介绍Linux Shell自动交互的解决方法,在这里拿出来和大家分享 ...
- 安卓软件改名器_自动点击屏幕的软件有哪些?-手机自动点击软件下载
闪电自动点击 系统工具 | 4.21 MB | 平台:安卓 更新时间:2020-11-09 下载 闪电自动点击app是一款能够帮助你自动操作重复性机械化的操作的软件,比如在游戏中你需要一直点击屏幕进行 ...
- 点击页面上的按钮后更新TextView的内容,谈谈你的理解?(阿里面试题 参照Alvin笔记 Handler源码解析)
阿里面试题: 点击页面上的按钮后更新TextView的内容,谈谈你的理解? 首先,这个一个线程间通信的问题,可以从Handler的角度进行解释,可以从五个角度分析这个问题: 1.需要在主线程更新UI, ...
- selenium学习笔记(4)——自动点击美团上面的美食中的代金券
想要系统学习python selenium自动化测试,请关注我的专栏: https://blog.csdn.net/column/details/29112.html 自动点击美团上面的美食中的代金券 ...
- centos 卸载软件_一篇看懂!详解-Linux系统中安装软件的三种方法
Linux系统中安装软件的三种方法 注:本文主要以CentOS为例介绍常用的安装方式,其他版本linux在文章底部 Linux系统中怎么安装软件,首先说一下应用程序与系统命令的区别: 1.文件位置 系 ...
- linux怎么断网怎么使用yum_电脑突然断网,连接不上网络怎么办?三种方法轻松找回...
很多朋友在用电脑的时候,经常会出现断网的现象,网络无法连接或者连不上,不管再怎么尝试,就是没有效果,那么接下来小编来教大家三种方法,解决无法连接网络的问题. 一.启动WLAN AutoConfig服务 ...
- linux终端下载notepad,在Linux系统上安装NotePad++的三种方法介绍
本文介绍在Linux操作系统上安装NotePad++的三种方法,使用Snap.Wine和NotePadQQ.这里要说的是:由于像Wine和Snap软件包这样的工具,在Linux上运行的Notepad+ ...
- 平板 刷 linux系统,在Linux系统上安装NotePad++的三种方法介绍
本文介绍在Linux操作系统上安装NotePad++的三种方法,使用Snap.Wine和NotePadQQ.这里要说的是:由于像Wine和Snap软件包这样的工具,在Linux上运行的Notepad+ ...
最新文章
- python安装Pyro报错:SyntaxError: Missing parentheses in call to ‘exec‘
- 豆瓣FLASHMP3播放器
- 内存对齐的规则以及作用
- 《实施Cisco统一通信VoIP和QoS(CVOICE)学习指南(第4版)》一导读
- 第二十八讲 解非齐次线性方程组
- STVD下配置Cosmic编译器
- [Linux实用工具]Ubuntu环境下SSH的安装及使用
- 香农定理和奈奎斯特定理区别_「中考复习」三大变换之旋转(旋转的构造-托勒密定理)...
- Linux常用命令总结之(五)alias
- git设置master权限_git怎么控制成员的权限?
- 转行进入测试一年有感
- 公司不能把笔记导出去真操蛋
- 人脸识别门禁系统java实现_java实现人脸识别源码【含测试效果图】——前台显示层(index.jsp)...
- 对象转换 json 字符串和 json转换对象的几种方式
- STM8使用STVD开发环境问题
- 【任务二】打卡——by 003-Vamein
- 《分布式消息中间件实践》 读书笔记
- Python Statsmodels 统计包之 OLS 回归
- linux如何安装vmtools工具
- Linux 系统的使用