arch开机自动认证

为什么80%的码农都做不了架构师?>>>   hot3.png

          前几天搞了一下开机自启动认证。环境是arch。学校的认证是H3C的,但学校官方给的linux版认证客户端臃肿且只支持ubuntu、rehat及衍生版。好在已经大牛解决这一问题,出了个小巧的python版的认证客户端yah3c

        运行yah3c只要在终端输入sudo yah3c即可,但是因为用了sudo,必定还要手工输入密码,而且运行yah3c时还有一处要选择是否新建账号或者使用哪一个已经使用过的账号。要想实验开机自启动认证,就得先除去这两个输入。

        首先是sudo的密码输入除去,此外后面用到的ethtool也要除去输入密码。运行sudo visudo 加入

$USER  ALL=NOPASSWD: /usr/bin/yah3c,  /usr/sbin/ethtool

  即可。

    然后是判断网线是否接上了,如没接上则直接退出。当连上网线时,sudo ethool eth0 的输出中会有 “L:ink detected yes”的字符串,所以检查的代码如下:

islink=`sudo ethtool eth0 | grep 'Link detected: yes'`
if [ -z "$islink" ]
then
   exit
fi

        因为yah3c只是认证,还要用networkmanager或者dhcp自动获取一下ip。我这里用的是networkmanager,命令如下 :

nmcli con up id "有线连接的名称"

        然后还要考虑一下如果第一次认证时失败了能让它循环认证。我判断是否认证成功的方法是看能否获取到ip。检查ip可以用ifconfig再用正则表达式扣出来。代码如下:

ifconfig eth0 | grep inet | grep -v inet6 | grep -v 127.0.0.1 | awk '{print $2}

        再考虑到有可能在无线网络的环境,所以还要检测一下能否通过wlan0得到ip,若能得到,则退出循环,避免死循环。

if [ -z $theip ]
  then
       theip=`ifconfig wlan0 | grep inet | grep -v inet6 | grep -v 127.0.0.1 | awk '{print $2}'`
 fi

       再考虑网络阻塞一直连接不上的状况,要设置个超时时间,避免一直循环着浪费cpu     

所以最后的脚本如下:

#!/bin/bash
islink=`sudo ethtool eth0 | grep 'Link detected: yes'`
if [ -z "$islink" ]
then
   exit
fi

theip='';
time=`date +%s`
difftime=0
while [[ -z $theip && $difftime -lt 60 ]]
do
    echo 1 | sudo yah3c &
    nmcli con up id "Wired connection 1"
    sleep 2
    theip=`ifconfig eth0 | grep inet | grep -v inet6 | grep -v 127.0.0.1 | awk '{print $2}'`
    sleep 1
    if [ -z $theip ]
    then
        theip=`ifconfig wlan0 | grep inet | grep -v inet6 | grep -v 127.0.0.1 | awk '{print $2}'`
    fi

    let "difftime=`date +%s`-$time"
    echo $difftime
done

  再最后就是把脚本放到合适的地方。我用的是kde环境,在kde环境准备好后会自动运行 ~/.kde4/Autostart/文件夹下的脚本。所以我便把脚本放到那。

        需要说明的是,kde在执行Autostart下的脚本时,在执行下一个任务时,会关闭前一个任务。所以sudo yah3c后面的&不可或缺,他将告诉系统在后台执行yah3c。我之前就是因为少了这个&导致没能保留yah3c进程因而开机自启动认 证几分钟后就掉线了。

        另外,我觉得开机自启动还是一个比较笨的方法的,如果能在第一次检测到有网线连接时启动脚本,那就perfect了

        如果你有更好的方法,请告知我。

   

转载于:https://my.oschina.net/chliny/blog/79358

你可能感兴趣的:(arch开机自动认证)