精华内容
下载资源
问答
  • 项目运行需要启动集群的多台服务器,每次配置一个新集群的时候手动安装java和tomcat太麻烦,写了一个bat脚本自动安装配置。bat1:查询服务器中是否有java和tomcat(免安装),没有从u盘进行拷贝。然后配置java环境变量...

    项目运行需要启动集群的多台服务器,每次配置一个新集群的时候手动安装java和tomcat太麻烦,写了一个bat脚本自动安装配置。

    bat1:查询服务器中是否有java和tomcat(免安装),没有从u盘进行拷贝。然后配置java环境变量。

    文件路径修改好后,右键,管理员运行即可。

    @echo off

    rem ---------------检查目录begin---------------

    set dPan=d:\

    set ePan=e:\

    set emcasFolder=emcas\

    set javaFolder=java

    set tomcatFolder=tomcat

    ::判断emcas文件夹是否存在,不存在创建

    echo 检查emcas文件夹

    if exist %dPan% (

    if exist %dPan%%emcasFolder% (

    rem 目录d:\MIS已存在,无需创建

    echo 目录%dPan%%emcasFolder%已存在,无需创建

    ) else (

    rem 创建d:\MIS

    echo 创建%dPan%%emcasFolder%

    md %dPan%%emcasFolder%

    )

    ) else (

    echo !!

    echo !!执行失败,当前系统上不存在%dPan%盘

    echo !!

    )

    pause

    ::判断java文件夹(免安装)是否存在,不存在从E盘(自己的U盘)相同目录下copy

    echo 检查java安装文件

    if exist %dPan%%emcasFolder%%javaFolder% (

    rem 目录d:\MIS\OracleDBAutoBackup已存在,无需创建

    echo 目录%dPan%%emcasFolder%%javaFolder%已存在无需创建

    ) else (

    rem 创建d:\MIS\OracleDBAutoBackup

    echo %dPan%%emcasFolder%%javaFolder%不存在,待创建...

    pause

    xcopy /e %ePan%%emcasFolder%%javaFolder% %dPan%%emcasFolder%%javaFolder%

    )

    pause

    ::判断tomcat文件夹(免安装)是否存在,不存在从E盘(自己的U盘)相同目录下copy

    echo 检查tomcat安装文件

    if exist %dPan%%emcasFolder%%tomcatFolder% (

    rem 目录d:\MIS\OracleDBAutoBackup已存在,无需创建

    echo 目录%dPan%%emcasFolder%%tomcatFolder%已存在无需创建

    ) else (

    rem 创建d:\MIS\OracleDBAutoBackup

    echo %dPan%%emcasFolder%%tomcatFolder%不存在,待创建...

    pause

    xcopy /e %ePan%%emcasFolder%%tomcatFolder% %dPan%%emcasFolder%%tomcatFolder%

    )

    pause

    rem ---------------检查目录end---------------

    rem ---------------配置java环境变量begin---------------

    :: TODO:设置java环境变量

    :: Author: Gwt

    color 02

    ::设置java的安装路径,可方便切换不同的版本

    set input=

    set /p "input=请输入java的jdk路径(或回车默认路径为D:\emcas\java\jdk1.8.0_131):"

    if defined input (echo jdk已设置) else (set input=D:\emcas\java\jdk1.8.0_131)

    echo jdk路径为%input%

    set javaPath=%input%

    ::设置jre的安装路径,可方便切换不同的版本

    set input=

    set /p "input=请输入java的jre路径(或回车默认路径为D:\emcas\java\jdk1.8.0_131\jre):"

    if defined input (echo jdk已设置) else (set input=D:\emcas\java\jdk1.8.0_131\jre)

    echo jre路径为%input%

    set jrePath=%input%

    ::如果有的话,先删除JAVA_HOME

    wmic ENVIRONMENT where "name='JAVA_HOME'" delete

    ::如果有的话,先删除ClASS_PATH

    wmic ENVIRONMENT where "name='CLASS_PATH'" delete

    ::如果有的话,先删除JRE_HOME

    wmic ENVIRONMENT where "name='JRE_HOME'" delete

    ::创建JAVA_HOME

    wmic ENVIRONMENT create name="JAVA_HOME",username="",VariableValue="%javaPath%"

    ::创建JRE_HOME

    wmic ENVIRONMENT create name="JRE_HOME",username="",VariableValue="%javaPath%"

    ::创建CLASS_PATH

    wmic ENVIRONMENT create name="CLASS_PATH",username="",VariableValue=".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar;"

    ::在环境变量path中,剔除掉变量java_home中的字符,回显剩下的字符串

    call set xx=%Path%;%JAVA_HOME%\jre\bin;%JAVA_HOME%\bin

    ::echo %xx%

    ::将返回显的字符重新赋值到path中

    wmic ENVIRONMENT where "name='Path' and username=''" set VariableValue="%xx%"

    pause

    rem ---------------配置java环境变量end---------------

    bat2:tomcat自启动。

    将这个文件的目录修改好后,放到C:\Users\ZhangYu\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup (自启动目录)下,电脑开启即可自动运行。

    D:

    cd D:\zysoft\apache-tomcat-8.0.45-windows-x64\apache-tomcat-8.0.45\bin

    call startup.bat

    TIMEOUT /T 5 /NOBREAK

    cd D:\zysoft\apache-tomcat-8.0.45-windows-x64\apache-tomcat-8.0.45\bin

    call startup.bat

    展开全文
  • 场景:A:在UI自动化时,删除数据时候,在界面UI提示“该XX已被使用,无法删除”。 这时候我们有需要做数据初始化的操作,需要把历史数据做删除... 配置在框架配置文件处。public classConst {public static final S...

    场景:A:在UI自动化时,删除数据时候,在界面UI提示“该XX已被使用,无法删除”。 这时候我们有需要做数据初始化的操作,需要把历史数据做删除,来确脚本运行的重复执行,和稳定性质。

    B: 在做新增操作时候,需要校验数据是否存在后台。需要校验后台数据。

    实现思路:

    1.把数据库的连接地址、用户名、密码。 配置在框架配置文件处。

    public classConst {public static final String DB_URL = "XXXX";public static final String DB_DatabaseName = "XXX";public static final String DB_UserName = "XXX";public static final String DB_Password = "XXX";

    }

    2.DBHelper 方法

    1 packagecom.pensee.utils;2

    3 importjava.sql.Connection;4 importjava.sql.DriverManager;5 importjava.sql.ResultSet;6 importjava.sql.SQLException;7 importjava.sql.Statement;8 importcom.pensee.config.Const;9

    10 public classDBHelper {11 static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";12 static String url = "jdbc:sqlserver://"+ Const.DB_URL +";DatabaseName="+ Const.DB_DatabaseName +"";13 static Connection con = null;14 static Statement st = null;15 static ResultSet res = null;16

    17

    18 public static voiddataBase() {19 try{20 Class.forName(driver);21 con = DriverManager.getConnection(url, ""+ Const.DB_UserName +"", ""+ Const.DB_Password +"");22 } catch(ClassNotFoundException e) {23 System.err.println("装载 JDBC/ODBC 驱动程序失败。");24 e.printStackTrace();25 } catch(SQLException e) {26 System.err.println("无法连接数据库");27 e.printStackTrace();28 }29 }30

    31 /**

    32 * 查询SQL方法33 *@paramsql34 *@return

    35 *@throwsSQLException36 */

    37 public static ResultSet find(String sql) throws SQLException{//对数据库进行数据查询38 //获得连接

    39 dataBase();40 st=con.createStatement();41 try{42 res=st.executeQuery(sql);43 returnres;44 } catch(SQLException e) {45 e.printStackTrace();46 return null;47 }48

    49 }50 /**

    51 * SQL删除修改52 *@paramsql53 *@return

    54 *@throwsSQLException55 */

    56 public static boolean update(String sql) throws SQLException{//对增删改57 //获得连接

    58 dataBase();59 st =con.createStatement();60 try{61 st.executeUpdate(sql);62 return true;63 } catch(SQLException e) {64 e.printStackTrace();65 return false;66 }67 }68

    69 }

    3. 如何调用DB

    String sql = "update hr_staff_policy set HolidayPolicy = 3 where staffno ='0092'";boolean result =DBHelper.update(sql);

    Assert.isTrue(result);

    System.out.println("SQL执行结果为:" +DBHelper.update(sql));

    4. 效果图:

    9cdf90f0efb061d7c8d727fe751a5bad.png

    框架如何增加JDBC

    com.microsoft.sqlserver

    sqljdbc4

    4.0

    进入sqljdbc4.jar包所在的位置,cmd运行以下命令(即在我们的project 的\lib路径下)

    mvn install:install-file -Dfile=sqljdbc4.jar -Dpackaging=jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0

    安装成功之后就可以在pom中引用sqljdbc依赖了。(已经加好上传了)

    五、 优化后的代码

    1 importjava.sql.Connection;2 importjava.sql.DriverManager;3 importjava.sql.ResultSet;4 importjava.sql.ResultSetMetaData;5 importjava.sql.SQLException;6 importjava.sql.Statement;7 importjava.util.ArrayList;8

    9 importorg.apache.logging.log4j.LogManager;10 importorg.apache.logging.log4j.Logger;11

    12 importcom.pensee.config.Const;13

    14 public classDBHelper {15 private static final Logger logger = LogManager.getLogger(DBHelper.class);16

    17 static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";18 static String url = "jdbc:sqlserver://"+ Const.DB_URL +";DatabaseName="+ Const.DB_DatabaseName +"";19

    20 private staticConnection getDBConnection() {21 Connection con = null;22 try{23 Class.forName(driver);24 con = DriverManager.getConnection(url, ""+ Const.DB_UserName + "", ""+ Const.DB_Password +"");25 } catch(ClassNotFoundException e) {26 logger.error("装载 JDBC/ODBC 驱动程序失败。");27 } catch(SQLException e) {28 logger.error("无法连接数据库");29 }30 returncon;31 }32

    33 private static voidcloseConnection(Connection con) {34 try{35 con.close();36 } catch(SQLException e) {37 ;38 }39 }40

    41 /**

    42 * 查询SQL方法43 *@paramsql44 *@return

    45 *@throwsSQLException46 */

    47 public static ArrayList query(String sql) throws SQLException{//对数据库进行数据查询48 //获得连接

    49 Connection con =getDBConnection();50 Statement st =con.createStatement();51 ResultSet res;52 try{53 res =st.executeQuery(sql);54 } catch(SQLException e) {55 throw new RuntimeException("查询失败: " +sql);56 }57 ArrayList result = new ArrayList();58 while(res.next()) {59 ResultSetMetaData rsmd =res.getMetaData();60 int columnCount =rsmd.getColumnCount();61 for (int i=0;i

    69 * SQL删除修改70 *@paramsql71 *@return

    72 *@throwsSQLException73 */

    74 public static void updateDB(String sql) throws SQLException{//对增删改75 //获得连接

    76 Connection con =getDBConnection();77 Statement st =con.createStatement();78 int recordsNo =st.executeUpdate(sql);79 if(recordsNo == 0) {80 throw new RuntimeException("执行失败: " +sql);81 } else if(recordsNo == 1){82 logger.info("更新成功1条: " +sql);83 } else{84 logger.info("更新成功条数: " +recordsNo);85 }86 closeConnection(con);87 }88

    89 //存在数据的时候更新,不存在的时候不需要更新,影响数据行数为0或者1

    90 public static void updateDBIfExist(String sql) throws SQLException{//对增删改91 //获得连接

    92 Connection con =getDBConnection();93 Statement st =con.createStatement();94 int recordsNo =st.executeUpdate(sql);95 logger.info("更新成功的record数量 " +recordsNo);96 closeConnection(con);97 }98

    99 public static void deleteVacationBalance(String code, String staffId) throwsSQLException {100 String sql = "DELETE lb FROM Leave_Balance lb LEFT JOIN Leave_Code lc ON lc.id = lb.LeaveCode_id "

    101 + "WHERE lc.LeaveBenefitCode ='" + code + "' and taffno ='" + staffId + "'";102 updateDB(sql);103 }104

    105 /**

    106 * 删除历史组织架构107 *@paramcode108 *@paramstaffId109 *@throwsSQLException110 */

    111 public static void deleteHistoryOrganzationalStructure(String hisname) throwsSQLException {112 String sql = "DELETE FROM Org_DataType WHERE NAME='" + hisname + "'";113 updateDB(sql);114 }115

    116 /**

    117 * 取得员工工号,该员工没有卡,用于case E-653118 *@return

    119 *@throwsSQLException120 */

    121 public static String getStaffNoWithoutCard() throwsSQLException {122 String sql = "SELECT ac.staffNo FROM At_Card ac INNER JOIN hr_Staff hs ON ac.StaffNo = hs.StaffNo "

    123 + "WHERE ac.No = '' AND hs.StaffType = 'Active'";124 String id = query(sql).get(0);125 String sqlDelete = String.format("DELETE ap FROM At_PunchClockInfo ap INNER JOIN At_Card ac ON ap.At_Card_id = ac.Id "

    126 + "WHERE ac.StaffNo ='%s'", id);127 updateDB(sqlDelete);128 returnid;129 }130 }

    六: jenkins配置增加JDBC

    4a910cdd4a883b0bf8614173ef4a271a.png

    展开全文
  • Oracle 主要配置文件介绍

    热门讨论 2007-08-25 10:07:40
    Oracle 主要配置文件介绍: profile文件,oratab 文件,数据库实例初始化文件 initSID.ora,监听配置文件, sqlnet.ora 文件,tnsnames.ora 文件 <br>1.2 Oracle 主要配置文件介绍 1.2.1 /etc/profile 文件...
  • 高级Shell脚本编程

    2013-10-28 10:08:19
    在一个脚本中使用cmp命令来比较两个文件. 12-33. basename和dirname 12-34. 检查文件完整性 12-35. Uudecode编码后的文件 12-36. 查找滥用的链接来报告垃圾邮件发送者 12-37. 分析一个垃圾邮件域 12-38. 获得...
  •  《精通JS脚本之ExtJS框架》附有配套光盘,提供了书中实例的源代码和视频教学文件。此外,读者还可以通过访问itzcn网站来获得即时在线帮助。  《精通JS脚本之ExtJS框架》可以作为Web开发的自学参考书,也可以作为...
  • (用更新包中的新沙城配置文件替换原来的) 2、更新战士技能十步一杀是否允许穿人穿怪选项设置 3、更新技能支持(解毒术,火焰冰,群体雷电术,群体施毒术,彻地钉,狮子吼,寒冰掌 诅咒术,擒龙手,移形换位,护体...
  • 精通qtp_自动化测试技术领航.pdf

    热门讨论 2015-03-30 17:12:38
    1.4 认清请远离QTP的脚本录制模式 1.4.1 QTP的两种视图及思维转换 1.4.2 总结 知识点巩固和举一反三练习 1.5 QTP精华——对象库(上)之基础攻略篇 1.5.1 引言 1.5.2 对象库的出现改写了软件测试历史 1.5.3 ...
  • │ ├─查询过滤器(查询逻辑无需编码,系统根据页面配置自动生成) │ ├─高级查询器(弹窗自动组合查询条件) │ ├─Excel导入导出工具集成(支持单表,一对多 导入导出) │ ├─平台移动自适应支持 ├─系统...
  • 2. 编辑页面**期、编辑器和验证脚本整理,调整到脚本文件edit.js中,如果有其他需求,可以修改脚本文件; 3. 增加oracle和mysql数据库支持,支持,系统可以支持ms sql、access、oracle和mysql等主流数据库; 4. ...
  • Ubuntu权威指南(2/2)

    2010-12-05 09:01:53
    6.3 保存编辑的文件并退出vim 136 6.4 vim编辑器的基本命令 137 6.4.1 移动光标位置 137 6.4.2 输入文本 138 6.4.3 修改与替换文本 138 6.4.4 撤销先前的修改 139 6.4.5 删除文本 139 6.4.6 复制、删除与粘贴文本 ...
  • Ubuntu权威指南(1/2)

    2010-12-05 08:57:03
    6.3 保存编辑的文件并退出vim 136 6.4 vim编辑器的基本命令 137 6.4.1 移动光标位置 137 6.4.2 输入文本 138 6.4.3 修改与替换文本 138 6.4.4 撤销先前的修改 139 6.4.5 删除文本 139 6.4.6 复制、删除与粘贴文本 ...
  • 切换至 5.56 枪械配置文件表,使用第一个配置 G7 切换至 9mm 枪械配置文件表,使用第一个配置 G8 切换至 7.62 枪械配置文件表,使用第一个配置 G9 切换至 .45 枪械配置文件表,使用第一个配置 G10 ...
  • sed与awk的那些事儿!

    2020-05-11 16:12:46
    sed多数用于修改配置文件配合脚本使用,实现非交互方式自动部署各种服务。 awk有着很厉害的查询功能,下面我们来看看awk的优势吧! Sed命令可以配合一下参数使用: p显示 d删除 s替换 -n 屏蔽默认输出 a 行后...

    sed与awk的那些事

    • 在这里给大家简单的介绍一下sed和awk的的基本常用选项
    • sed多数用于修改配置文件,并配合脚本使用,实现非交互方式自动部署各种服务。
    • awk有着很厉害的查询功能,下面我们来看看awk的优势吧!

    Sed命令可以配合一下参数使用:
    p显示 d删除 s替换 -n 屏蔽默认输出 a 行后插入 i 行前插入 c 整行替换

    . p是打印输入的意思也就是print单词的首字母:

    sed -n ‘p’ /etc/passwd  #输出/etc/passwd的全部配置
    sed -n ‘1p’ /etc/passwd  #输入第一行
    sed -n ‘1,2p’ /etc/passwd  #输出第一行到第二行
    sed -n ‘/^root/p’ /etc/passwd #输出以root开头的行
    sed -n ‘1p;4p’ /etc/passwd  #输出第一行和第四行
    sed -n ‘/bash$/p’ /etc/passwd  #输出以bash结尾的行
    

    . 首先我们来看下/etc/passwd这个文件的内容

    [root@localhost ~]# cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    

    执行sed ‘1d’ /etc/passwd #删除/etc/passwd文件中的第一行

    [root@localhost ~]#sed ‘1d’ /etc/passwd
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    

    这里我们可以看到确实第一行被我们删除了,让我们再来看一下配置文件

    [root@localhost ~]# cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    

    有很多人会疑问为什么删除了,配置文件里还有呢?
    因为我们执行命令的时候没有加上-i选项,建议初学者慎用-i选项
    如果加上-i选项那么配置文件里符合条件的内容就会被删除掉。

    即:sed -i ‘1d’ /etc/passwd

    d是删除也就是delete单词的首字母:

    sed ‘1d’ /etc/passwd  #删除/etc/passwd文件中的第一行
    sed ‘1,2d’ /etc/passwd  #删除第一行到第二行
    sed ‘/^root/d’ /etc/passwd  #删除以root开头的行
    sed ‘1d;4d’ /etc/passwd  #删除第一行和第四行
    sed ‘/bash$/d’ /etc/passwd  #删除以bash结尾的行
    

    三. s是替换也就是substitute(代替)单词的首字母:
    格式 ‘s/要被替换的内容/替换成什么/’ 文件路径

    ed -n ‘63,78s/#//’ a.txt	没加-p不输出
    sed -n ‘s/aa/bb/2’ a.txt	将每行的第二个aa换成bb
    sed -n ‘s/root/xwh/p’ a.txt	p是输出出来
    sed -n ‘s#/bin/bash#/bin/nologin#’ a.txt	用#当分隔符
    sed -n ‘65,78s/^/#/’	开头加上注释
    sed -n 'sed ‘2s/a/p/2p’ a.txt	替换第二行的第二个a字符为p,后面的p是输出
    

    sed工具的多行文本处理操作:
    i: 在指定的行之前插入文本
    a:在指定的行之后追加文本
    c:整行替换

    [root@kube-node1 ~]# vimt a.txt  创建一个测试文件随意写点东西
    servername 192.168.4.1
    test sed -i -a -c
    

    例子1:

    [root@kube-node1 ~]# sed -i '2i hello world! ’ a.txt    在第2行前插入指定内容
    [root@kube-node1 ~]# cat a.txt
    servername 192.168.4.1
    hello world!   这行就是我们用i添加进来的
    test sed -i -a -c
    

    例子2:

    [root@kube-node1 ~]# sed -i '2a this is a test ’ a.txt    第2行后前插入指定内容
    [root@kube-node1 ~]# cat a.txt
    servername 192.168.4.1
    hello world!   
    this is a test      这行就是我们用a添加进来的
    test sed -i -a -c
    

    例子3:

    [root@kube-node1 ~]# sed -i '3c test test test ’ a.txt    将第3行替换为指定内容
    [root@kube-node1 ~]# cat a.txt
    servername 192.168.4.1
    hello world!   
    test test test     
    test sed -i -a -c
    

    awk基本使用
    NR 指定行 NF指定列 -F 指定分隔符
    格式:awk [选项] ‘[条件]{指令}’ 文件

    awk{ print $1 $2}’ /root/a.txt	//输出文件第一列和第二列的值 逐行任务
    df -h | awk ‘NR==2{print $4}’	//输出第二行第4列的值
    awk -F: ‘{print $1,$7}’ /etc/passwd	//以冒号为分隔符
    awk -F: ‘{print NR,NF}’ /etc/passwd //输出该文件有多少行,每行有多少列 中间用逗号相隔。逗号是空格,可以加可不加
    awk -F: ‘{print $1,“家目录是” $7}’ /etc/passwd	//awk可以输出常量,需要用引号引起来
    RX是接受数据量	TX是回复的数据量
    ifconfig eth0 | awk ‘/RX p/{print $5}’ //利用正则匹配,过滤包含RX p的行
    

    利用3种方法获得剩余根分区可用的空间

    [root@localhost ~]# df -h /
    文件系统        容量  已用  可用 已用% 挂载点
    /dev/sda1       385G   66G  300G   18% /
    

    方法一:df -h / | tail -1 | awk ‘{print $4}’
    方法二: df -h / | awk ‘NR==2{print $4}’
    方法三:df -h | awk ‘$3 == “66G”{print $4}’

    awk会逐行处理文本,支持在处理第一行之前做一些准备工作(比如先定义一个变量),以及在处理完最后一行之后做一些总结性质的工作(最后喊出变量)
    格式:
    awk [选项] ‘[条件]{指令}’ 文件
    awk [选项] ’ BEGIN{指令} {指令} END{指令}’ 文件
    BEGIN行前操作执行一次 awk ‘BEGIN{a=1;print a}’ 中间要用分号间隔,固定格式
    { } 逐行执行,END 行后处理只执行一次
    示例:

    首先利用BEGIN定义变量a,并过滤以bash结尾的行,有一行a的数就加1,最后输出变量a
    [root@localhost ~]#awk 'BEGIN{a=0}/bash$/{a++}END{print a}' /etc/passwd
    6
    
    统计全文行数:
    [root@localhost ~]# awk 'BEGIN{x=1}{x++}END{print x} ' /etc/passwd
    49
    
    输出第3列大于10并且小于20的用户:
    [root@localhost ~]# awk -F: '$3>10 && $3<20{print}' /etc/passwd
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    

    awk分支:

    单分支 ‘{ if(条件){编辑指令}}’
    双分支 ‘{if (条件){编辑指令}}else{编辑指令}’
    多分支 ‘{if (条件) {编辑指令}else if(条件2){编辑指令}}awk -F: '{if($3<=1000){i++}}END{print i} ’ /etc/passwd	
    awk -F: ‘{if($3<1000){a++}else{b++}}END{print a,b}’ /etc/passwd	awk -F: ‘{if($7=="/bin/bash"){x++}else{y++}}END{print x,y}’ /etc/passwd
    awk -F: ‘BEGIN{x=0;b=0}{if($3>30){x++}else if($3<50){b++}}END{print x,b}’ /etc/passwd
    

    数组:
    格式:
    for(变量 in 数组名){print 变量,数组名[变量]}
    awk ‘BEGIN{a1=100;a2=200;print a1,a2}’ 一个下标对应一个值
    awk ‘BEGIN{a1=12;a2=13;for (i in a){print i, a[i]}}’
    遍历数组:
    cat a.txt
    abc 对应 a[abc]=1
    xyz 对应 a[xyz]=1
    xyz 对应 a[xyz]=2
    abc 对应 a[abc]=2
    opq 对应 a[opq]=1
    abc 对应 a[abc]=3
    {a[$1]++} //数组名可以任意,逐行任务收集数据
    awk ‘{a[$1]++}END{for(i in a){print i,a[i]}}’ a.txt
    循环的是下标

    [root@kube-node1 ~]# cat a.txt //做一个素材使用以下是内容
    abc 192.168.0.1
    xyz 192.168.0.2
    xyz 192.168.0.2
    abc 192.168.0.1
    opq 192.168.0.3
    abc 192.168.0.1
    

    输出各个ip出现了几次

    格式 ‘{ }END{ for ( ) {print }}’
    [root@kube-node1 ~]# awk ‘{ip[$2]++}END{for (i in ip){print i,ip[i]}}’ a.txt

    举例查出/var/log/httpd/acces_log中哪个ip访问了几次?

    [root@svr5 ~]# awk ‘{ip[$1]++}{for(i in ip)}{print i ,ip[i]}’ /var/log/httpd/acces_log | grep sort -nr	
    -n 是正序 -r 是倒叙
    

    下面我们用AWK写一个脚本来获取服务器硬件信息

    [root@svr5 ~]# vim test.sh
    #!/bin/bash
    ip=ifconfig eth0 | awk '/inet /{print $2}'
    echo “本地IP地址是:”$ip
    cpu=uptime | awk '{print $NF}'
    echo "本机CPU最近15分钟的负载是:"$cpu
    net_in=ifconfig eth0 | awk '/RX p/{print $5}'
    echo “入站网卡流量为:”$net_in
    net_out=ifconfig eth0 | awk '/TX p/{print $5}'
    echo “出站网卡流量为:”$net_out
    mem=free | awk '/Mem/{print $4}'
    echo “内存剩余容量为:$mem
    disk=`df | awk '/\/$/{print $4}'`
    echo "根分区剩余容量为:"$disk
    user=`cat /etc/passwd |wc -l`
    echo "本地账户数量为:"$user
    login=`who | wc -l`
    echo "当前登陆计算机的账户数量为:"$login
    process=`ps aux | wc -l`
    echo "当前计算机启动的进程数量为:"$process
    soft=`rpm -qa | wc -l`
    echo "当前计算机已安装的软件数量为:"$soft
    

    最后让我们一起来运行这个脚本吧!

    [root@localhost ~]# bash test.sh
    本地IP地址是:192.168.71.128
    本机CPU最近15分钟的负载是:0.05
    入站网卡流量为:2179218
    出站网卡流量为:110655
    内存剩余容量为:11239072
    根分区剩余容量为:314253608
    本地账户数量为:48
    当前登陆计算机的账户数量为:3
    当前计算机启动的进程数量为:228
    当前计算机已安装的软件数量为:1578
    
    展开全文
  • X-Scan v3.1

    2018-10-22 08:43:03
    /dat/config.ini -- 用户配置文件,用于保存待检测端口列表、CGI漏洞检测的相关设置及所有字典文件名称(含相对路径) /dat/config.bak -- 备份配置文件,用于恢复原始设置 /dat/cgi.lst -- CGI漏洞列表 /dat/iis_...
  • CCB:Visual Basic动态按钮配置文件 CCH:Corel图表文件 CCO:CyberChat数据文件 CCT:Macromedia Director Shockwave投影 CDA:CD音频轨道 CDF:Microsoft频道定义格式文件 CDI:Philip的高密盘交互格式 CDM...
  • RED HAT LINUX 6大全

    热门讨论 2011-10-21 18:46:06
    7.2.7 sendmail.cf:配置文件 114 7.2.8 自动生成sendmail.cf文件 124 7.2.9 测试sendmail和sendmail.cf 126 7.2.10 普通的sendmail配置错误 128 7.3 POP 128 7.3.1 配置POP服务器 128 7.3.2 配置ipop3d 128 7.3.3 A...
  • 本资源由大量的实用批处理文件组成,删除.txt尾缀名双击即可直接使用,既是学习的模板也可以作为实用程序,如下为文件组成,涉及文件管理,系统,网络,小工具等等: 0-reaname 2000XP停止打印.bat BAT珍藏 dir.bat...
  • PLSQL Developer 8.0.3.1510 简体中文绿色破解版

    万次下载 热门讨论 2010-07-15 16:36:07
     对象浏览器——可配置的树形浏览能够显示同PL/SQL开发相关的全部信息,使用该浏览器可以获取对象描述、浏览对象定义、创建测试脚本以便调试、使能或禁止触发器或约束条件、重新编译不合法对象、查询或编辑表格、...
  • X-Scan

    千次下载 热门讨论 2008-04-04 15:19:43
    使用说明.txt -- X-Scan使用说明 /dat/language.ini -- 多语言配置文件,可通过设置“LANGUAGE\SELECTED”项进行语言切换 /dat/language.* -- 多语言数据文件 /dat/config.ini -- 用户配置文件,用于...
  • 7.4 autoreconf指令:更新已经生成的配置文件 7.5 autoscan指令:生成configure.in模板文件 7.6 autoupdate 指令:更新 configure.in文件 7.7 gcc指令:GNU的C和C++编译器 7.8 gdb指令:GNU调试器 7.9 gdbserver指令...
  • 2、sudo ./docker.sh restart #修改配置文件后,通过此名命令可重新加载容器运行 3、sudo ./docker.sh rm #删除容器 4、sudo ./docker.sh drun #后台运行容器 5、sudo ./docker.sh logs #在后台运行时,通过此命令...
  • Linux命令笔记

    2019-03-14 09:16:58
    3:apropos 查看配置文件信息 语法:apropos 配置文件 4:--help 查看命令主要选项 语法:命令 --help 5:info 获取帮助信息 语法:info 命令 6:help 获取Shell内置命令的帮助信息 语法:help 命令 7:apt-get 安装卸载...
  • 包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理、网络服务管理、系统诊断、故障恢复、系统安全、批处理和配置文件,powershell等一系列的命令行管理方式以及脚本。本书侧重于系统、服务、网络...
  • 包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理、网络服务管理、系统诊断、故障恢复、系统安全、批处理和配置文件,powershell等一系列的命令行管理方式以及脚本。本书侧重于系统、服务、网络...
  •  cc实例150 修改文件及目录的名称   5.6 文件的读取与保存   cc实例151 顺序读取文件   cc实例152 制作日志文件   5.7 文件管理   cc实例153 分类整理磁盘文件   cc实例154 计算机磁盘空间报警...
  •  cc实例150 修改文件及目录的名称   5.6 文件的读取与保存   cc实例151 顺序读取文件   cc实例152 制作日志文件   5.7 文件管理   cc实例153 分类整理磁盘文件   cc实例154 计算机磁盘空间报警...
  • 可以通过系统属性或配置文件的方式来指定路径,多个路径之间用逗号分隔开 类路径下的词典文件,需要在相对路径前加入前缀classpath: 指定方式有三种: 指定方式一,编程指定(高优先级): WordConfTools.set(...
  • 3.3.4 利用编辑器自动生成查询语句 54 3.3.5 脱机编写SQL语句后连接到服务器 55 3.3.6 全屏显示查询编辑器 55 3.3.7 使用模板编写SQL语句 56 3.3.8 创建自定义模板 57 3.3.9 使用项目脚本和解决方案 58 3.4 ...
  • 迷你版SQL2000服务器

    2015-01-23 17:32:37
    5、计划任务只有在勾选时才会写入配置文件,在开启服务后才会读取开启任务,如果计划任务中定义的数据库被删除或分离,任务会自动取消; 6、如果需要使用默认实例,请千万不要发布到有安装MSSQL且使用默认实例的...
  • 加 密配置文件操作模块.ec 加强执行1.0.ec 加解密文本1.1.ec 加载进度条.ec 加载进度条v2.0.ec 动 态加载菜单模块1.0版.ec 动态显示窗口.ec 动态类名.ec 动态组件操作模块.ec 动态菜单模块.ec 动态 调整分辩率.ec ...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 175
精华内容 70
关键字:

脚本查询配置文件并自动修改