【威尼斯网址开户网站】在ubuntu linux下安装*.sh的不二等秘书技

linux sh : bashdb的安装和始发使用,shbashdb

在巅峰输入 sudo sh *.sh

前不久有个等级次序要求凭借IS-IS路由和谐做开采。全数找到了quagga那些开源的路由软件,好像近些日子独有它是永葆IS-IS契约况且开源的路由软件了。可是quagga本人有比很多的bug,何况对IS-IS的支撑不是太好,bug越来越多(不可能,好像IS-IS我们用的挺少的)。

#!/bin/bash -

#########################################################################################
# watchdog_secure.sh
# 防暴力破解程序,防范远程扫描和暴力破解
# version:1.0
# update:20171123
#########################################################################################

protect_time=600

function set_sshd_protect() {
    sshd_protect=`cat /root/eGW/networkcfg.conf |grep '^set_sshd_protect_enable' |awk '{ print $2 }'`
    HEAD=$(lastb|grep ssh|head -n 20|tail -n 1|awk '{print $5" "$6" "$7}')
    echo $HEAD
    TIME=$(($(date +%s)-$(date +%s -d "$HEAD")))
    echo $TIME
    if [ $TIME -lt 600 ]; then
        time_all=`date +%Y-%m-%d' '%H:%M:%S`
        echo $time_all "login error too much!" >> /root/eGW/Logs/watchdog/secure.log
        if [[ $sshd_protect -eq 1 ]];then
            lastb|grep ssh|head -n 20 |awk '{ip[$3]++}END{ for(key in ip){ if(ip[key]>5){print key}}}' >> /root/eGW/Logs/watchdog/secure.txt
            cat /root/eGW/Logs/watchdog/secure.txt |sort |uniq > /root/eGW/Logs/watchdog/secure_sort.txt
            mv /root/eGW/Logs/watchdog/secure_sort.txt /root/eGW/Logs/watchdog/secure.txt
            echo "#hosts.deny" > /etc/hosts.deny
            while read line
            do
                echo "sshd:"$line >> /etc/hosts.deny
            done < /root/eGW/Logs/watchdog/secure.txt 
        fi
    fi  
}



function protect_while() {
    while true
    do
        set_sshd_protect
        systemctl restart sshd
        sleep $protect_time
    done
}

#set_sshd_protect
protect_while &

前言

前一周在就学linux脚本编制程序,调试时,用echo 或bash -x
反省语法用bash -n x.sh

在函数中,要用echo再次来到出参字符串,纵然再用echo打字与印刷调节和测验新闻,将逻辑搞乱了。
即刻就在想,linux工具这么强盛,既然有gdb, 那就有脚本的调节和测量试验器才对啊.

今日在看书时,见到了bashdb这些工具。
在debian下试过了,好使。
即便并未有gdb -tui 那么好使,也快心遂意了。

bashdb中也可能有无数调和命令,踏向bashdb后,用help命令能够看出命令列表。
对此脚本的起码调节和测量试验,精通多少个指令就足足。

这边推荐三个种类——OSLacrosse(open source
routing)。这里大约介绍一下OS大切诺基,OSRubicon是一个根据quagga的开源项目,小编以为实质上对是quagga的护卫,为quagga社区进献代码。它修改了quagga的非常多bug,并增添了有个别新的feature。详细消息大家能够参见他们的网址:

下载点

bashdb-4.4-0.94.tar.bz2.7z

自己动用的liunx系统是Ubuntu12.4,quagga的依据的成都百货上千工具包都是比较旧的版本,所以要求手动下载这几个本子的工具举办设置,而不是采取apt-get。

实验

# backup /etc/apt/sources.list
cp /etc/apt/sources.list /etc/apt/sources.list.bk1
# add one row on the file(/etc/apt/sources.list)'s end for install bashdb
vi /etc/apt/sources.list
deb http://ftp.de.debian.org/debian wheezy main
wq
# update install source
aptitude update
# install bashdb
aptitude install bashdb
# bash doc
# http://www.gnu.org/software/bash/manual/bashref.html
# debug linux sh
# cd the .sh file dir, debug x.sh by bashdb
bashdb $(pwd)/main.sh
# bashdb's buildin command list
bashdb<0> help
Available commands:
  action     condition  edit     frame    load     run     source  unalias  
  alias      continue   enable   handle   next     search  step    undisplay
  backtrace  debug      eval     help     print    set     step-   untrace  
  break      delete     examine  history  pwd      shell   step+   up       
  clear      disable    export   info     quit     show    tbreak  watch    
  commands   display    file     kill     return   signal  trace   watche   
  complete   down       finish   list     reverse  skip    tty  
# list command
bashdb<1> help list
list[>] [LOC|.|-] [NUMBER] 
LOC is the starting location or dot (.) for current file and
line. Subsequent list commands continue from the last line
listed. Frame switching however resets the line to dot. LOC can be a
read-in function name or a filename and line number separated by a
colon, e.g /etc/profile:5
If NUMBER is omitted, use the LISTSIZE setting as a count. Use "set
listsize" to change this setting. If NUMBER is given and is less than
the starting line, then it is treated as a count. Otherwise it is
treated as an ending line number.
By default aliases "l>" and "list>" are set to list. In this case and
more generally when the alias ends in ">", rather than center lines
around LOC that will be used as the starting point.
Examples:
list .      # List centered around the curent frame line
list        # Same as above if the first time. Else start from where
            # we last left off.
list -      # list backwards from where we left off.
list> .     # list starting from the current frame line.
list  10 3  # list 3 lines centered around 10, lines 9-11
list> 10 3  # list lines 10-12
list  10 13 # list lines 10-13
list  10 -5 # list from lines to 5 lines before teh end of the file
list  /etc/profile:5  # List centered around line 5 of /etc/profile.
list  /etc/profile 5  # Same as above.
list usage  # list centered around function usage().
# 列出脚本源码-当前
l .
# 列出脚本源码-指定行数
l 0
# bashdb的命令和gdb兼容, 用gdb的命令就可以了
# n : 步过
# s : 步入
# 回车 : 执行上一条命令
# 打印变量
print $i_index
pr $i_index
# 指定行数下断点
break 18
# 用debian源提供的bashdb下断点有bug, continue后,断不下来
# 去官网上下载一个新的bashdb : https://sourceforge.net/projects/bashdb/files/bashdb/4.4-0.94/
tar xvf ./bashdb-4.4-0.94.tar.bz2
cd bashdb-4.4-0.94/
aptitude install autotools-dev
make clean
./configure
make
make check # 这步有2项通不过,不影响
# SKIP: test-file-with-spaces
# FAIL: test-sig
# SKIP: test-bug-loc
# FAIL: test-bug-set-e
aptitude remove bashdb
rm -rf /usr/share/bashdb/
make install
# 可以用新版bashdb重新调试脚本了
bashdb $(pwd)/main.sh
# 列出当前文件所有内容, 行数范围设置大点 从0~1000, 如果这个当前sh只有45行,就都显示全了
l 0 1000
# 对指定文件的指定行数下断点
break /home/dev/main.sh:35
# 对函数下断点
break func_show_title
# 继续 continue
c
# 断点列表
L
# 列出指定文件指定行数
l /home/dev/common/sh.prog_version:16
# 删除断点(指定断点号码, 用L命令看断点列表)
delete 1
# bashdb好像没有在调试中,设置变量值的控制语法
# 执行完一个函数或一个循环
finish
# 退出调试器
q
# 好像初步使用bashdb, 查的这些调试命令,已经够用了
# 看一本书上,人家调试就用echo 或 bash -x, 人家对脚本编程该有多熟练啊
# 如果是我,只有在没有条件的情况下才会用echo, 有利器为啥不用呢?

第一从OS路虎极光提供的git链接上下载quagga的源码:

源码下载达成后,最佳看一下它的安装文书档案,INSTALL.quagga.txt。

展开源码目录后会开采未有configure文件和makefile文件,因为那多少个文本是使用bootstrap.sh来生成。展开终端,进入到源码目录,键入如下命令:

./bootstrap.sh

这时会报错,是因为安装文件中提到的那个工具未有安装,或然设置版本不对。

化解办法:

  1. 安装 autoconf 2.59
    决不用apt-get安装,apt-get安装的是流行版本,要求从英特网下载源码包,然后手动安装。如下工具也是一律。别的,若是系统现已设置了对应版本的autoconf工具,在手动安装以前必要卸载。使用如下命令进行检验是不是曾经安装:

    dpkg -l autoconf
    

    只要已经安装,须要卸载,使用如下命令:

    sudo apt-get purge autoconf  sudo apt-get autoremove autoconf  sudo apt-get clean autoconf
    

    上边工具的检查实验和卸载同样

  2. 安装 automake 1.9.6

  3. 安装 libtool 1.5.22
  4. 安装 texinfo 4.7
  5. 安装 GNU AWK 3.1.5

安装上述工具之后,可能照样无法正确安装quagga,如若出现类似与法规错误,则须求案子POSIX-compliant
Shell。依据quagga安装文档的呈报:“Quagga
expects a POSIX.2 compliant
system”。这里作者了三个ubuntu下POSIX-comliant的shell,地址:

OK,以后应当能够应用


相关文章