在我写自动化脚本的时候是要真实发送验证码才能往下进行UI自动化

思路:验证码会显示在哪些地方,手机短信?数据库存储?日志?

完整代码如下:

package guanyu.tools;

import com.jcraft.jsch.*;

//import jdk.nashorn.tools.Shell;

import java.awt.*;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.util.ArrayList;

public class Shell {

//远程主机的ip地址

private String ip;

//远程主机登录用户名

private String username;

//远程主机的登录密码

private String password;

//设置ssh连接的远程端口

public static final int DEFAULT_SSH_PORT = 22;

//保存输出内容的容器

private ArrayList stdout;

/**

* 初始化登录信息

* @param ip ip地址

* @param username 用户名

* @param password ssh密码

*/

public Shell(final String ip, final String username, final String password) {

this.ip = ip;

this.username = username;

this.password = password;

stdout = new ArrayList();

}

/**

* 执行shell命令

* @param command

* @return

*/

public int execute(final String command) {

int returnCode = 0;

JSch jsch = new JSch();

//调用 myuserinfo

MyUserInfo userInfo = new MyUserInfo();

try {

//创建session并且打开连接,因为创建session之后要主动打开连接

Session session = jsch.getSession(username, ip, DEFAULT_SSH_PORT);

session.setPassword(password);

session.setUserInfo(userInfo);

session.connect();

//打开通道,设置通道类型,和执行的命令

Channel channel = session.openChannel("exec");

ChannelExec channelExec = (ChannelExec)channel;

channelExec.setCommand(command);

channelExec.setInputStream(null);

BufferedReader input = new BufferedReader(new InputStreamReader

(channelExec.getInputStream()));

channelExec.connect();

System.out.println("shell执行命令 :" + command);

//接收远程服务器执行命令的结果

String line;

while ((line = input.readLine()) != null) {

stdout.add(line);

}

input.close();

// 得到returnCode

if (channelExec.isClosed()) {

returnCode = channelExec.getExitStatus();

}

// 关闭通道

channelExec.disconnect();

//关闭session

session.disconnect();

} catch (JSchException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

return returnCode;

}

/**

* get stdout

* @return

*/

public ArrayList getStandardOutput() {

return stdout;

}

//编写一个main方法来进行测试一下

public static void main(final String [] args) {

Shell s = new Shell("ip地址", "用户名", "密码");

System.out.println("SSH隧道连接成功");

// System.out.print("验证码为:");

//进入/目录;打印日志文件 | 手机号为:13500774693 | awk过滤空格 | 取最后一行,这里根据你的实际情况来进行分析,这里的awk命令在我的博客里面会有更新,也可以自行百度

s.execute("cd /&&cat data/logs/guanyu.auth_web/external.log |grep 13500774693 | awk -F '[ ]+' '{print $11}'| awk 'END {print}'");

ArrayList stdout = s.getStandardOutput();

for (String str : stdout) {

System.out.println("for循环输出:"+str);

System.out.println("直接输出:"+stdout.get(0));

String yanzhengma = stdout.get(0);

String houjiwei = yanzhengma.substring(yanzhengma.length()-6);

//最后验证码取出来了,之后可以进行自动化了

System.out.println("输出验证码后几位:"+houjiwei);

}

}

}

java通过ssh读取日志_IDEA+java通过SSH来进行分析日志,实现UI自动化动态验证码登录...相关推荐

  1. java压缩文件读取_用Java读取/写入压缩和非压缩文件

    java压缩文件读取 这篇文章的主要原因是尝试不要重复自己( DRY ),因为通常,我会遇到递归的需求,即读写压缩的和非压缩的文件(主要是JSON和CSV). 首先让我们看看如何读取文本文件. 注意我 ...

  2. java按照列读取excel,使用java读取一列excel表

    我有一张excel表.我想编写一个方法,该方法将参数作为要读取的列号,并返回由该列中的所有数据组成的数组. 然后将该列元素放在xml工作表中.我怎么写一个方法来做到这一点? 解决方法: 使用Apach ...

  3. java 从控制台读取_转载 java从控制台读取输入的方法

    import java.io.BufferedReader;   import java.io.IOException;   import java.io.InputStreamReader;   i ...

  4. linux里的日志文件干啥用的,linux分析日志经常用的命令

    解法1: cat access_log | awk  '{print $1}' | sort | uniq -c | sort -n -r | head -10 解法2: cat access_log ...

  5. Linux下使用ssh动态验证码登陆机器

    ssh动态验证码登录机器 Google Authenticator是一个动态验证码程序,兼容各种智能手机平板设备,可以用来做各种帐号的二次验证,增加帐号的安全性.SSH是Linux系统的最重要防线之一 ...

  6. Java 线程实时读取日志文件

    古怪的需求 在实习的公司碰到一个古怪的需求:在一台服务器上写日志文件,每当日志文件写到一定大小时,比如是1G,会将这个日志文件改名成另一个名字,并新建一个与原文件名相同的日志文件,再往这个新建的日志文 ...

  7. java连接服务器读取日志

    说明:1.工具在使用中可能存在BUG,可以自己修改或者告诉我哦~~~ 2.本文内容在最后有文档~ <!-- https://mvnrepository.com/artifact/ch.ethz. ...

  8. Java使用POI读取和写入Excel指南

    Java使用POI读取和写入Excel指南 做项目时经常有通过程序读取Excel数据,或是创建新的Excel并写入数据的需求: 网上很多经验教程里使用的POI版本都比较老了,一些API在新版里已经废弃 ...

  9. 使用Java输入流(InputStream)读取FTP服务器图片,并上传到另一台FTP服务器

    使用JavaInputStream读取FTP图片到远程服务器 最近需要做一个新需求,要读取ftp服务器的图片,然后保存到另一台服务器上,ftp的访问路径是经过apache转换的,记录一下遇到的坑.我的 ...

最新文章

  1. Confluence 6 从你的 JDBC 连接中直接启用校验查询
  2. 使用 Button 类在 XNA 中创建图形按钮(九)
  3. 博士申请 | 英国爱丁堡大学NLP组招收自然语言处理方向全奖博士生
  4. 干翻Java_Java第三次作业第一题
  5. python operator __gt___Python operator.gt方法代码示例
  6. 为啥HashMap的默认容量是16?
  7. framework中编译anroid工程并在模拟器上运行
  8. linux模块导出符号 EXPORT_SYMBOL_GPLEXPORT_SYMBOL(转)
  9. ajax请求返回整个页面,页面里的javascript执行问题(requireJS)
  10. python之路第一天
  11. clion生成qt的qrc文件
  12. Mac下一款好用的UML图绘制工具(StarUML)
  13. 黑苹果HIDPI开启问题
  14. Codesys和基恩士扫码枪Ethernet/IP通信
  15. python整蛊代码+详解
  16. 2020你必须掌握的CSS特效~建议收藏
  17. dat image 微信_微信电脑微信image文件夹下的dat文件怎么打开?
  18. 使用python爬取某药品网站药品说明
  19. 迪信通机器人_迪信通要做机器人:玩票还是另有深意?
  20. 那些95后创业者,后来都怎样了?

热门文章

  1. 【荐】如何规划 Nginx 网站目录的权限(用户,用户组,ssh,sftp)
  2. Ubuntu12.04安装Mac OSX Yosemite
  3. mysql Got error 28 from storage engine
  4. strlen与sizeof区别
  5. Spring MVC POST中文乱码解决方案
  6. linux c 运行报错 killed
  7. easyui 去掉按钮 虚线框
  8. redis启动问题:/var/redis/run/redis_6379.pid exists, process is already running or crashed
  9. Linux下的权限掩码umask
  10. php文件之间相互引用路径问题的一般处理方法