月度归档: 2019 年 5 月

  • 如何使用SecureCRT实现命令行的上传下载文件(使用sz与rz命令)图文教程

    如何使用SecureCRT实现命令行的上传下载文件(使用sz与rz命令)图文教程

    我们借助securtCRT,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器。

    其中,对于sz和rz的理解与记忆我用了如下的方法(很多时候容易搞混):
    sz中的s意为send(发送),告诉客户端,我(服务器)要发送文件 send to cilent,就等同于客户端在下载。

    rz中的r意为received(接收),告诉客户端,我(服务器)要接收文件 received by cilent,就等同于客户端在上传。

    记住一点,不论是send还是received,动作都是在服务器上发起的。我们习惯了说上传或是下载,其实大可不必。使用这两个命令,只要思考一点,是要把文件从服务器上发送出去,还是从客户端接上接收回来,就可以了。

    若想把文件从客户端上传到服务器,就是服务器将文件接收回来,逻辑是:我(客户端)上传,你(服务器)接收,使用rz。

    若想把文件从服务器上下载回(到客户端),就是服务器将文件发送出去,逻辑是:我下载(客户端),你(服务器)发送,使用sz。

    好吧,最后总结为一句话:

    我(客户端)上传,你(服务器)接收(RZ)。
    我下载(客户端),你(服务器)发送(SZ)。

    我下载(客户端),你(服务器)发送(SZ)。

    如何使用 SecureCRT 下载文件?

    比如我们想快速的下载一个名为:moitorSwitch.php的文件,可以直接在终端中输入:

    sz moitorSwitch.php

    如何设定SecureCRT下载的位置?

    如何使用 SecureCRT 上传文件?

    在终端中直接输入rz命令,然后再对话框中选择文件即可。

    rz
  • Linux系统中使用PHP脚本定时监控交换机端口流量并添加删除修改交换机规则控制流量

    Linux系统中使用PHP脚本定时监控交换机端口流量并添加删除修改交换机规则控制流量

    今日在公司项目中用到了自动运维的脚本,用来每分钟执行php脚本监控交换机,如果交换机流量过大则添加出口,如果过小则减少出口。用到了一些技术性的东西。

    具体代码实例如下:

    <?php
    /**********************************************
     * 监听交换机端口流量并切换规则
     * 当端口流量大于阀值则顺序执行A系列命令
     * 当端口流量小于阀值则倒序执行B系列命令
     * Author:Jerry
     * EMail : admin#laoji.org
     * Data :2019/5/30
     ***********************************************/
    //  开始运行脚本预输出
    $stime=microtime(true); 
    echo str_repeat('-', 120).PHP_EOL;
    ini_set('date.timezone','Asia/Shanghai');
    echo '当前时间:'.date("Y-m-d H:i:s").PHP_EOL;
    //  执行命令得出端口流量值
    $cmd = '/usr/bin/snmpwalk -v2c -c power@idc 192.168.108.108 1.3.6.1.2.1.31.1.1.1.10.5';
    //  流量阀值
    $valve = '1000';
    // 交换机信息配置
    $ip = '192.168.108.108';
    $port = '23';
    $user = 'puer';
    $passwd = 'puer123';
    
    //  命令集,cmdA 添加规则集,cmdD删除规则集
    $cmdA = array(
        array(  'ip route-static vpn-instance baishanyun2041 0.0.0.0 0.0.0.0 192.168.108.137 public description UPLINK-20180525',
                'ip route-static vpn-instance baishanyun2041 0.0.0.0 0.0.0.0 192.168.108.141 public description UPLINK-20180525'
            ),
        array(  'ip route-static vpn-instance baishanyun1029 0.0.0.0 0.0.0.0 192.168.108.137 public description UPLINK-20180525',
                'ip route-static vpn-instance baishanyun1029 0.0.0.0 0.0.0.0 192.168.108.141 public description UPLINK-20180525'
            ),
        array(  'ip route-static vpn-instance baishanyun1030 0.0.0.0 0.0.0.0 192.168.108.137 public description UPLINK-20180525',
                'ip route-static vpn-instance baishanyun1030 0.0.0.0 0.0.0.0 192.168.108.141 public description UPLINK-20180525'
            ),
        array(  'ip route-static vpn-instance baishanyun1033 0.0.0.0 0.0.0.0 192.168.108.137 public description UPLINK-20180525',
                'ip route-static vpn-instance baishanyun1033 0.0.0.0 0.0.0.0 192.168.108.141 public description UPLINK-20180525'
            )    
    );
    $cmdD = array(
        array(  'UNDO ip route-static vpn-instance baishanyun2041 0.0.0.0 0.0.0.0 192.168.108.137 public',
                'UNDO ip route-static vpn-instance baishanyun2041 0.0.0.0 0.0.0.0 192.168.108.141 public'
            ),
        array(  'UNDO ip route-static vpn-instance baishanyun1029 0.0.0.0 0.0.0.0 192.168.108.137 public',
                'UNDO ip route-static vpn-instance baishanyun1029 0.0.0.0 0.0.0.0 192.168.108.141 public'
            ),
        array(  'UNDO ip route-static vpn-instance baishanyun1030 0.0.0.0 0.0.0.0 192.168.108.137 public',
                'UNDO ip route-static vpn-instance baishanyun1030 0.0.0.0 0.0.0.0 192.168.108.141 public'
            ),
        array(  'UNDO ip route-static vpn-instance baishanyun1033 0.0.0.0 0.0.0.0 192.168.108.137 public',
                'UNDO ip route-static vpn-instance baishanyun1033 0.0.0.0 0.0.0.0 192.168.108.141 public'
            ),
    );
    
    //  获取当前流量值
    $return = explode(':', shell_exec($cmd) );
    $traffic = trim($return[count($return) - 1]);
    
    //  开始登录交换机
    $telnet = new telnet("{$ip}", "{$port}");
    echo $telnet->read_till("login: ");
    $telnet->write("{$user}\n");
    echo $telnet->read_till("password: ");
    $telnet->write("{$passwd}\n");
    echo $telnet->read_till(">");
    //echo $telnet->read_till(":> ");
    $telnet->write("sys\n");
    echo $telnet->read_till("]");
    $telnet->write("dis this | inc ip route-static vpn-instance baishanyun\n");
    echo $config = $tmp = $telnet->read_till("]");
    //  获取交换机全部配置
    while( strpos($tmp,'---- More ----') !== false ){
        $telnet->write(" \n"); 
        echo $config .= $tmp = $telnet->read_till("]");
    }
    $traffic = '2000';
    $needCommit = 0 ;
    $cmdAry = array();
    $return = '';
    if( $traffic >= $valve){//流量大于阀值
        $return .= '流量大于阀值'.PHP_EOL;
        $cmdAry = $cmdA;
        for($i=0;$i<count($cmdAry);$i++){
            for( $j=0;$j<count($cmdAry[$i]);$j++){
                if(strpos($config, $cmdAry[$i][$j]) !== false ){
                    $return .=  '规则已存在'.$j.'#'.$i.':'.$cmdAry[$i][$j].PHP_EOL;
                }else{
                    echo $telnet->write($cmdAry[$i][$j]."\n");
                    echo $telnet->read_till("]");
                    $needCommit = 1;
                    $return .= '规则已写入'.$j.'#'.$i.':'.$cmdAry[$i][$j].PHP_EOL;
                    if( $j == (count($cmdAry[$i])-1)){  
                        break 2;
                    }
                    
                }
            }        
        }  
    }else{
        $return .= '流量小于阀值'.PHP_EOL;
        $cmdAry = $cmdD;
        $num = count( $cmdAry ) - 1;
        for( $i=$num;$i>=0;$i--){
            for( $j=0;$j<count($cmdAry[$i]);$j++){
                if( strpos($config, str_replace('UNDO ', '', $cmdAry[$i][$j])) !== false ){
                    $telnet->write($cmdAry[$i][$j]."\n");
                    echo $telnet->read_till("]");        
                    $needCommit = '1';
                    $return .= '规则需删除'.$j.'#.'.$i.':'.$cmdAry[$i][$j].PHP_EOL;      
                    if( $j == (count($cmdAry[$i])-1) ){
                        $goBreak = 1;
                        break 2;
                    }
                }else{
                    $return .= '没有匹配到规则'.$j.'#'.$i.':'.$cmdAry[$i][$j].PHP_EOL;
                }
            
            }
        }
    }
    //  提交commit生效
    if( $needCommit ){
        $telnet->write("commit\n");
        echo $telnet->read_till(']');
        $return .= '规则已commit'.PHP_EOL;
    }
        
     
    echo $telnet->close();
    echo $return;
    
    class Telnet {
        var $sock = NULL;
        function telnet($host,$port) {
            $this->sock = fsockopen($host,$port);
            socket_set_timeout($this->sock,2,0);
        }
        function close() {
            if ($this->sock)  fclose($this->sock);
            $this->sock = NULL;
        }
        function write($buffer) {
            $buffer = str_replace(chr(255),chr(255).chr(255),$buffer);
            fwrite($this->sock,$buffer);
        }
        function getc() {
            return fgetc($this->sock);
        }
        function read_till($what) {
            $buf = '';
            while (1) {
                $IAC = chr(255);
                 
                $DONT = chr(254);
                $DO = chr(253);
                 
                $WONT = chr(252);
                $WILL = chr(251);
                 
                $theNULL = chr(0);
                $c = $this->getc();
                 
                if ($c === false) return $buf;
                if ($c == $theNULL) {
                    continue;
                }
                // if ($c == "1") {
                // continue;
                // }
                if ($c != $IAC) {
                    $buf .= $c;
                    if ($what == (substr($buf,strlen($buf)-strlen($what)))) {
                        return $buf;
                    }
                    else {
                        continue;
                    }
                }
                $c = $this->getc();
                 
                if ($c == $IAC) {
                    $buf .= $c;
                }
                else if (($c == $DO) || ($c == $DONT)) {
                    $opt = $this->getc();
                    // echo "we wont ".ord($opt)."\n";
                    fwrite($this->sock,$IAC.$WONT.$opt);
                }
                elseif (($c == $WILL) || ($c == $WONT)) {
                    $opt = $this->getc();
                    // echo "we dont ".ord($opt)."\n";
                    fwrite($this->sock,$IAC.$DONT.$opt);
                }
                else {
                    // echo "where are we? c=".ord($c)."\n";
                }
            }
        }
    }
    
    $etime=microtime(true);//获取程序执行结束的时间
    $total=$etime-$stime;  //计算差值
    echo PHP_EOL."执行时间:{$total} 秒".PHP_EOL;

    脚本中会自动读取交换机当前配置,并且根据 ---- More ---- 自动输入空格分屏获取全部配置。本需求中cmdA按顺序执行,cmdD则按倒序执行。

    本脚本中可以放置在crontab中定时监控。

  • PHP开发中跳出多层循环方法

    PHP开发中跳出多层循环方法

    php foreach如何跳出两层循环(详解)。老季觉得挺不错的,现在就分享给大家,也给大家做个参考。一起过来看看吧

    使用break可以跳出当前循环,那如果想再跳出上一层的循环呢 我们就需要break 2即可

        $arr1 = array('a1','a2','a3','a4');
        $arr2 = array('b1','b2','b3','b4');
        foreach($arr1 as $a1){
          foreach($arr2 as $k=>$a2){
            if($k=='2'){
              break 2;
            }
            echo $a1.'==='.$a2.'<br/>';
          }
        }
  • PHP如何登录连接TELNET并执行交换机命令类 图文教程

    PHP如何登录连接TELNET并执行交换机命令类 图文教程

    今天开发的时候需要登录交换机执行命令,下面我们记录一下php的class类来完成。

    <?php
    class Telnet {
        var $sock = NULL;
        function telnet($host,$port) {
            $this->sock = fsockopen($host,$port);
            socket_set_timeout($this->sock,2,0);
        }
        function close() {
            if ($this->sock)  fclose($this->sock);
            $this->sock = NULL;
        }
        function write($buffer) {
            $buffer = str_replace(chr(255),chr(255).chr(255),$buffer);
            fwrite($this->sock,$buffer);
        }
        function getc() {
            return fgetc($this->sock);
        }
        function read_till($what) {
            $buf = '';
            while (1) {
                $IAC = chr(255);
                 
                $DONT = chr(254);
                $DO = chr(253);
                 
                $WONT = chr(252);
                $WILL = chr(251);
                 
                $theNULL = chr(0);
                $c = $this->getc();
                 
                if ($c === false) return $buf;
                if ($c == $theNULL) {
                    continue;
                }
                // if ($c == "1") {
                // continue;
                // }
                if ($c != $IAC) {
                    $buf .= $c;
                    if ($what == (substr($buf,strlen($buf)-strlen($what)))) {
                        return $buf;
                    }
                    else {
                        continue;
                    }
                }
                $c = $this->getc();
                 
                if ($c == $IAC) {
                    $buf .= $c;
                }
                else if (($c == $DO) || ($c == $DONT)) {
                    $opt = $this->getc();
                    // echo "we wont ".ord($opt)."\n";
                    fwrite($this->sock,$IAC.$WONT.$opt);
                }
                elseif (($c == $WILL) || ($c == $WONT)) {
                    $opt = $this->getc();
                    // echo "we dont ".ord($opt)."\n";
                    fwrite($this->sock,$IAC.$DONT.$opt);
                }
                else {
                    // echo "where are we? c=".ord($c)."\n";
                }
            }
        }
    }

    这里需要使用 fsockopen 方法:

    (PHP 4, PHP 5, PHP 7)
    fsockopen — 打开一个网络连接或者一个Unix套接字连接

    调用使用方法:

    <?php
    $telnet = new telnet("ip", 'port');
    echo $telnet->read_till("login: ");
    $telnet->write("user\n");//telnet用户名
    echo $telnet->read_till("password: ");
    $telnet->write("passwd\n");//telnet密码
    echo $telnet->read_till(">");
    //echo $telnet->read_till(":> ");
    $telnet->write("dis dev\n");//执行命令1
    echo $telnet->read_till(">");
    $telnet->write("dis dev\n");//执行命令2
    echo $telnet->read_till(">");
    // TODO
    echo $telnet->close();//关闭连接
  • Vultr VPS 安装了Debian系统后如何修改iptables规则配置 图文教程

    Vultr VPS 安装了Debian系统后如何修改iptables规则配置 图文教程

    前面的文章我们讲述了Debian9系统如何修改SSH端口 图文教程,这里讲述一下我们在购买Vultr(Vultr 优惠活动 注册即送$50美金,16个机房可选,按时计费)之后如何修改完了SSH之后将规则添加到iptables中。

    我们这里就将ssh修改成19521然后如何将规则添加到iptables中为例。

    下面我们用iptables-save命令将配置好的iptables的规则保存到/etc/local/iptables/rules.v4.1.save文件

    导出现有的规则

    iptables-save > /etc/iptables/rules.v4.save

    修改规则配置文件

    vi /etc/iptables/rules.v4.save

    Firewall configuration written by system-config-securitylevel
    Manual customization of this file is not recommended.
    *filter
    :INPUT DROP [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    :syn-flood – [0:0]
    -A INPUT -i lo -j ACCEPT
    -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
    -A INPUT -p tcp -m state –state NEW -m tcp –dport 19521 -j ACCEPT
    -A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT
    -A INPUT -p tcp -m state –state NEW -m tcp –dport 443 -j ACCEPT
    -A INPUT -p icmp -m icmp –icmp-type 8 -j ACCEPT
    COMMIT

    我们这里已将19521端口添加到了规则中。

    重新导入新的iptables规则

    iptables-resotre < /etc/iptables/rules.v4.save

    查看新的iptables规则

    iptables -L -n
  • MacOS系统中Mojave如何设置简单简短密码 解除密码最小长度4位

    MacOS系统中Mojave如何设置简单简短密码 解除密码最小长度4位

    对于经常要求你输入密码的MacOS 来说,密码多于1位就是浪费生命。
    升级Mojave后。长度最小是4位,这就讨厌了。恨不得回到老版本了。
    能不能改变这个密码策略呢?

    下面我们给出具体的方法,本方法需要在MacOS的终端中运行。

    sudo su -
    pwpolicy getaccountpolicies > temp.xml
    vi temp.xml
    • 将文件中第一行Getting global account policies删除.
    • 将4位长度限制改成1位,如上图红线部分:<string>policyAttributePassword matches '^$|.{1,}+'</string>

    修改完成后保存文件,然后将修改好的规则重新导入。

    pwpolicy setaccountpolicies temp.xml

    现在就可以设置1尾数的简单密码啦。记得将temp.xml文件删除哦。

  • ECharts图表中的XY轴长度过大如何截取?

    ECharts图表中的XY轴长度过大如何截取?

    前面我们记录了ECharts图表中XY轴数据过多导致重叠显示不全问题如何解决 图文教程,下面我们记录一下如果XY轴长度过大如何截取只显示一部分内容。

                axisLabel : { 
                    formatter: function (params){ //标签输出形式 ---请开始你的表演 
                        var my_length = 36;
                        if( params.length > my_length) return params.substring(0,my_length); 
                        else return params; 
                    }, 
                },

    在xAxis或者yAxis中设定一下长度,如下图:

    这里我们限定的字符长度是36,可以根据需求自行决定长度。

  • PHP中如何将JSON格式字符串转换成http的url参数请求 图文教程

    PHP中如何将JSON格式字符串转换成http的url参数请求 图文教程

    我们在日常的开发中,肯定会遇到JSON数组转化成http请求的情况,下面我们直接记录一下php中的方法及函数:

    http_build_query(json_decode($json,TRUE));

    http_build_query — 生成 URL-encode 之后的请求字符串,官方文档:https://php.net/manual/zh/function.http-build-query.php

    json_decode — 对 JSON 格式的字符串进行解码,官方文档:https://php.net/manual/en/function.json-decode.php

  • ECharts图表点击柱状打开a链接

    ECharts图表点击柱状打开a链接

    昨天我们记录了 ECharts图表中XY轴数据过多导致重叠显示不全问题如何解决 图文教程 ,今天我们记录一下在Echarts图标中我们点击柱状图的时候打开链接的需求,当然这里需要我们在传送过来的数组中要求链接才行。

    JAVASCRIPT代码

    var myChart = echarts.init(document.getElementById('yday_runtime_slow_10'));
    // 使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);
    myChart.on('click',function(e){
    //    console.log(e);//调试的时候可以打开,根据实际情况来设定。
        window.open(e.name);
    });
  • ECharts图表中XY轴数据过多导致重叠显示不全问题如何解决 图文教程

    ECharts图表中XY轴数据过多导致重叠显示不全问题如何解决 图文教程

    ECharts,缩写来自Enterprise Charts,商业级数据图表,它最初是为了满足百度公司商业体系里各种业务系统(如凤巢、广告管家等等)的报表需求。 现在这个项目也由百度在开发维护。

    之前我们介绍了【PHP Mysql 动态数据结合 highcharts 图表统计】,最近我们在日常的开发中使用到ECharts插件来制表,但是如果遇到XY轴内容过长显示不全怎么办?下面我们记录一下解决办法。

    PHP代码部分

    
        $res = db_select('online_action_log','1=1 group by url order by nums desc','url,count(url) as nums','','10');  
        $res = array_reverse($res);
        $tmp = array();
        foreach($res as $key => $val ){
            $tmp['x'][] = $val['nums']; 
            $tmp['y'][] = $val['url']; 
        }
        $yday_url_top10['xAxis'] = json_encode(array_values($tmp['x']));
        $yday_url_top10['yAxis'] = json_encode(array_values($tmp['y']));   

    HTML代码

    <div id="yday_url_top10"></div>

    JAVASCRIPT代码

    <script type="text/javascript">
    /* URL TOP 10 开始*/               
    yday_url_top10_option = {
        title : {
            text: '昨日URL访问前十',
    //        subtext: '数据来自网络'
        },
        tooltip : {
            trigger: 'axis'
        },
        legend: {
            data:['昨日URL访问前十', '']
        },
        toolbox: {
            show : true,
            feature : {
                mark : {show: true},
                dataView : {show: true, readOnly: false},
                magicType: {show: true, type: ['line', 'bar']},
                restore : {show: true},
                saveAsImage : {show: true}
            }
        },
        calculable : true,
        xAxis : [
            {
                type : 'value',
                boundaryGap : [0, 0.01]
            }
        ],
        yAxis : [
            {
                type : 'category',
                data : <?php echo $yday_url_top10['yAxis']?>,
                axisLabel:{ interval:0,//0:全部显示,1:间隔为1显示对应类目,2:依次类推,(简单试一下就明白了,这样说是不是有点抽象) 
                            rotate:0,//倾斜显示,-:顺时针旋转,+或不写:逆时针旋转 
                }
            }
        ],
        grid: [{
             left: '30%',//因旋转导致名字太长的类目造成遮蔽,可以配合这两个属性
             bottom:'10%'// 分别表示:距离左边距和底部的距离,具体数值按实际情况调整
        }],
        series : [
            {
                name:'访问次数',
                type:'bar',
                itemStyle : {  
                        normal : {  
                            color:'#ff69b4',  //圈圈的颜色
                            lineStyle:{  
                                color:'#ff69b4'  //线的颜色
                            }  
                    }  
                },  
                data:<?php echo $yday_url_top10['xAxis']?>
            },
        ]
    };
    var yday_url_top10_Chart = echarts.init(document.getElementById('yday_url_top10'));
    // 使用刚指定的配置项和数据显示图表。
    yday_url_top10_Chart.setOption(yday_url_top10_option);
    /*  URL TOP 10 IP 结束*/       
    </script>

    整理代码执行后,数据HTML结果如下:

    这里是Y轴的内容比较长,所以我们这里将grid的配置中加入了left:30%的属性,这里需要根据自己的需求来写。

    整体运行效果:

  • Linux如何使用UnixBench脚本测试系统服务器性能跑分 图文教程

    Linux如何使用UnixBench脚本测试系统服务器性能跑分 图文教程

    UnixBench是一款开源的用于测试Unix、BSD、Linux系统基本性能的工具,比较通用于Linux系统VPS性能测试,主要测试项目有:系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C库等系统基准性能提供测试数据。关于如何使用UnixBench为Linux系统VPS进行跑分测试,在此文章当中为大家介绍一个开源的UnixBench一键跑分测试脚本,使用非常简单,下面简单的几段命令即可实现一键跑分测试。

    脚本命令

    如果你想使用UnixBench测试你的服务器性能,请使用SSH工具连接你的服务器后执行下面命令。搬瓦工BandwagonHost VPS 使用Putty连接SSH图文教程[Vutlr]Linux Cetnos Debian 使用putty登陆 vultr VPS 服务器。脚本默认使用UnixBench5.1.3版本,因为大多VPS都没有显卡或者是集成显卡,不需要进行图像性能测试,所以作者注释了关于graphic的测试项。此脚本运行测试时间大约10-30分钟,跑分结束后得分越高性能越好。

    wget --no-check-certificate https://github.com/teddysun/across/raw/master/unixbench.sh
    chmod +x unixbench.sh
    ./unixbench.sh

    二、测试效果

    ————————————————————————
    Benchmark Run: Wed Dec 19 2018 19:50:58 – 20:19:17
    2 CPUs in system; running 1 parallel copy of tests

    Dhrystone 2 using register variables 21092505.4 lps (10.0 s, 7 samples)
    Double-Precision Whetstone 2655.9 MWIPS (9.9 s, 7 samples)
    Execl Throughput 845.3 lps (30.0 s, 2 samples)
    File Copy 1024 bufsize 2000 maxblocks 213526.5 KBps (30.0 s, 2 samples)
    File Copy 256 bufsize 500 maxblocks 55094.0 KBps (30.0 s, 2 samples)
    File Copy 4096 bufsize 8000 maxblocks 669049.2 KBps (30.0 s, 2 samples)
    Pipe Throughput 262532.9 lps (10.0 s, 7 samples)
    Pipe-based Context Switching 32340.5 lps (10.0 s, 7 samples)
    Process Creation 1722.2 lps (30.0 s, 2 samples)
    Shell Scripts (1 concurrent) 2072.5 lpm (60.0 s, 2 samples)
    Shell Scripts (8 concurrent) 384.7 lpm (60.0 s, 2 samples)
    System Call Overhead 308320.4 lps (10.0 s, 7 samples)

    System Benchmarks Index Values BASELINE RESULT INDEX
    Dhrystone 2 using register variables 116700.0 21092505.4 1807.4
    Double-Precision Whetstone 55.0 2655.9 482.9
    Execl Throughput 43.0 845.3 196.6
    File Copy 1024 bufsize 2000 maxblocks 3960.0 213526.5 539.2
    File Copy 256 bufsize 500 maxblocks 1655.0 55094.0 332.9
    File Copy 4096 bufsize 8000 maxblocks 5800.0 669049.2 1153.5
    Pipe Throughput 12440.0 262532.9 211.0
    Pipe-based Context Switching 4000.0 32340.5 80.9
    Process Creation 126.0 1722.2 136.7
    Shell Scripts (1 concurrent) 42.4 2072.5 488.8
    Shell Scripts (8 concurrent) 6.0 384.7 641.1
    System Call Overhead 15000.0 308320.4 205.5
    ========
    System Benchmarks Index Score 363.6

    ————————————————————————
    Benchmark Run: Wed Dec 19 2018 20:19:17 – 20:47:45
    2 CPUs in system; running 2 parallel copies of tests

    Dhrystone 2 using register variables 40199084.3 lps (10.0 s, 7 samples)
    Double-Precision Whetstone 5315.7 MWIPS (9.9 s, 7 samples)
    Execl Throughput 1321.4 lps (30.0 s, 2 samples)
    File Copy 1024 bufsize 2000 maxblocks 329910.4 KBps (30.0 s, 2 samples)
    File Copy 256 bufsize 500 maxblocks 89161.7 KBps (30.0 s, 2 samples)
    File Copy 4096 bufsize 8000 maxblocks 1131551.0 KBps (30.0 s, 2 samples)
    Pipe Throughput 496906.4 lps (10.0 s, 7 samples)
    Pipe-based Context Switching 89894.4 lps (10.0 s, 7 samples)
    Process Creation 3208.2 lps (30.0 s, 2 samples)
    Shell Scripts (1 concurrent) 2742.8 lpm (60.0 s, 2 samples)
    Shell Scripts (8 concurrent) 380.8 lpm (60.2 s, 2 samples)
    System Call Overhead 562093.4 lps (10.0 s, 7 samples)

    System Benchmarks Index Values BASELINE RESULT INDEX
    Dhrystone 2 using register variables 116700.0 40199084.3 3444.7
    Double-Precision Whetstone 55.0 5315.7 966.5
    Execl Throughput 43.0 1321.4 307.3
    File Copy 1024 bufsize 2000 maxblocks 3960.0 329910.4 833.1
    File Copy 256 bufsize 500 maxblocks 1655.0 89161.7 538.7
    File Copy 4096 bufsize 8000 maxblocks 5800.0 1131551.0 1951.0
    Pipe Throughput 12440.0 496906.4 399.4
    Pipe-based Context Switching 4000.0 89894.4 224.7
    Process Creation 126.0 3208.2 254.6
    Shell Scripts (1 concurrent) 42.4 2742.8 646.9
    Shell Scripts (8 concurrent) 6.0 380.8 634.7
    System Call Overhead 15000.0 562093.4 374.7
    ========
    System Benchmarks Index Score 618.8
    ————————————————————————

  • Debian9系统如何修改SSH端口 图文教程

    Debian9系统如何修改SSH端口 图文教程

    前篇我们介绍了 Windows 10启用Linux子系统(WSL) 图文教程,下面我们具体介绍一下在安装完了Debian系统以后如何修改SSH服务的端口,以及如何设置防火墙修改端口。

    比如在拿到debian系统之后简单的配置服务器的安全肯定要禁止默认的22端口,有些服务商默认就给我们随机的SSH端口,不过大部分还是用的22端口,这里考虑到安全问题,我们还是修改成自定义的端口,以及防火墙配置。这里我们正好刚安装好Win10的Linux子系统,所以这里可以给大家介绍一下服务器配置修改Debian端口。

    修改SSH配置文件/etc/ssh/sshd_config

    vi /etc/ssh/sshd_config

    这里我们可以看到默认22端口,去掉前面的#,且在下面添加一行 设置 一个新的端口,这里姑且是19521,代表是今天的日期嘛。然后保存之后退出。

    重启SSH服务

    /etc/init.d/ssh restart

    如果我们在Linux中启用了防火墙则需要进一步配置防火墙的规则[Vultr]Linux系统中iptables防火墙 常用规则整理

    我们不仅仅可以修改SSH端口,而且还可以使用SSH密匙免密码登录,让Linux系统更安全 SecureCRT通过ssh密钥登录 Linux服务器 图文教程

WeChat