【问题标题】:Bash startup script which opens a PPP and then executes a delayed command--how?Bash 启动脚本,它打开一个 PPP,然后执行一个延迟的命令——怎么样?
【发布时间】:2011-09-25 08:11:37
【问题描述】:

我有一个 bash 脚本,我想在启动时运行 (Kubuntu 11.04),它会打开我公司的 VPN。 KDE 中的 VPN 客户端不喜欢这个 VPN,所以我需要手动执行此操作。它打开一个 ppp0 连接,然后添加一个 ip 路由。这是问题所在:我需要运行 pppd call 命令,大约 5 秒后,添加 ip 路由。我的命令很好,在两个不同的 shell 会话中分别运行这两个命令很有效;我的问题是 pppd call 命令启动 ppp0 进程,除非我想终止该进程,否则我无法在启动时在同一脚本中运行 ip route 命令。

我可以:

(1) 以某种方式线程化这两个命令?

(2) 编写三个脚本;控制器脚本、pppd 脚本和 ip 路由脚本?

(3) 这样做不会很笨拙?

【问题讨论】:

    标签: multithreading bash startup kde


    【解决方案1】:

    你就不能把pppd进程放到后台吗

    function is_pppd_working {
        # do some test to check pppd is doing what it's meant to
    }
    
    function setup_route {
        # do your ip route stuff
    }
    
    pppd > somelogfile.log 2>&1 &
    sleep 5
    PPD_IS_WORKING=$(is_pppd_working)
    if [ ${PPD_IS_WORKING} ]
    then
        setup_route
    else
        # uh oh!!
    fi
    

    【讨论】:

    • 这是我所做的:#!/bin/bash pppd call VPNname > /home/user/Dropbox/logvpnerrors.log 2>&1 & sleep 5 PPD_IS_WORKING=$(is_pppd_working) if [ ${PPD_IS_WORKING} ] then setup_route else # todo function is_pppd_working { IFCONFIG="/sbin/ifconfig $ppp0" ISIT=$IFCONFIG | grep "向上" | wc -l; test $ISIT -gt 0; } function setup_route { ip route add [IPROUTE] dev ppp0 } fi
    • 那么,我的问题是,为什么我会收到 is_pppd_working 的未知命令错误?
    • 在使用前声明函数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    相关资源
    最近更新 更多