java通过ssh读取日志_IDEA+java通过SSH来进行分析日志,实现UI自动化动态验证码登录...
在我写自动化脚本的时候是要真实发送验证码才能往下进行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自动化动态验证码登录...相关推荐
- java压缩文件读取_用Java读取/写入压缩和非压缩文件
java压缩文件读取 这篇文章的主要原因是尝试不要重复自己( DRY ),因为通常,我会遇到递归的需求,即读写压缩的和非压缩的文件(主要是JSON和CSV). 首先让我们看看如何读取文本文件. 注意我 ...
- java按照列读取excel,使用java读取一列excel表
我有一张excel表.我想编写一个方法,该方法将参数作为要读取的列号,并返回由该列中的所有数据组成的数组. 然后将该列元素放在xml工作表中.我怎么写一个方法来做到这一点? 解决方法: 使用Apach ...
- java 从控制台读取_转载 java从控制台读取输入的方法
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; i ...
- linux里的日志文件干啥用的,linux分析日志经常用的命令
解法1: cat access_log | awk '{print $1}' | sort | uniq -c | sort -n -r | head -10 解法2: cat access_log ...
- Linux下使用ssh动态验证码登陆机器
ssh动态验证码登录机器 Google Authenticator是一个动态验证码程序,兼容各种智能手机平板设备,可以用来做各种帐号的二次验证,增加帐号的安全性.SSH是Linux系统的最重要防线之一 ...
- Java 线程实时读取日志文件
古怪的需求 在实习的公司碰到一个古怪的需求:在一台服务器上写日志文件,每当日志文件写到一定大小时,比如是1G,会将这个日志文件改名成另一个名字,并新建一个与原文件名相同的日志文件,再往这个新建的日志文 ...
- java连接服务器读取日志
说明:1.工具在使用中可能存在BUG,可以自己修改或者告诉我哦~~~ 2.本文内容在最后有文档~ <!-- https://mvnrepository.com/artifact/ch.ethz. ...
- Java使用POI读取和写入Excel指南
Java使用POI读取和写入Excel指南 做项目时经常有通过程序读取Excel数据,或是创建新的Excel并写入数据的需求: 网上很多经验教程里使用的POI版本都比较老了,一些API在新版里已经废弃 ...
- 使用Java输入流(InputStream)读取FTP服务器图片,并上传到另一台FTP服务器
使用JavaInputStream读取FTP图片到远程服务器 最近需要做一个新需求,要读取ftp服务器的图片,然后保存到另一台服务器上,ftp的访问路径是经过apache转换的,记录一下遇到的坑.我的 ...
最新文章
- Confluence 6 从你的 JDBC 连接中直接启用校验查询
- 使用 Button 类在 XNA 中创建图形按钮(九)
- 博士申请 | 英国爱丁堡大学NLP组招收自然语言处理方向全奖博士生
- 干翻Java_Java第三次作业第一题
- python operator __gt___Python operator.gt方法代码示例
- 为啥HashMap的默认容量是16?
- framework中编译anroid工程并在模拟器上运行
- linux模块导出符号 EXPORT_SYMBOL_GPLEXPORT_SYMBOL(转)
- ajax请求返回整个页面,页面里的javascript执行问题(requireJS)
- python之路第一天
- clion生成qt的qrc文件
- Mac下一款好用的UML图绘制工具(StarUML)
- 黑苹果HIDPI开启问题
- Codesys和基恩士扫码枪Ethernet/IP通信
- python整蛊代码+详解
- 2020你必须掌握的CSS特效~建议收藏
- dat image 微信_微信电脑微信image文件夹下的dat文件怎么打开?
- 使用python爬取某药品网站药品说明
- 迪信通机器人_迪信通要做机器人:玩票还是另有深意?
- 那些95后创业者,后来都怎样了?
热门文章
- 【荐】如何规划 Nginx 网站目录的权限(用户,用户组,ssh,sftp)
- Ubuntu12.04安装Mac OSX Yosemite
- mysql Got error 28 from storage engine
- strlen与sizeof区别
- Spring MVC POST中文乱码解决方案
- linux c 运行报错 killed
- easyui 去掉按钮 虚线框
- redis启动问题:/var/redis/run/redis_6379.pid exists, process is already running or crashed
- Linux下的权限掩码umask
- php文件之间相互引用路径问题的一般处理方法