婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Shell腳本實現自動檢測修改最快的Ubuntu軟件源

Shell腳本實現自動檢測修改最快的Ubuntu軟件源

熱門標簽:東莞電銷機器人價格一覽表 杭州機器人外呼系統 百度地圖的地圖標注 地圖標注超出范圍怎么辦 旅游地圖標注大全 陜西電銷卡外呼系統怎么安裝 百度地圖標注圖標更換 excel地址地圖標注 佛山高德地圖標注中心

每次裝好Ubuntu,對于大多數用戶來說,首先要做的事就是手動修改/etc/apt/sources.list文件,將里面的官方軟件源地址更換為自己學校或者公司的軟件源。當我們更換一個工作環境后,可能伴隨著又要替換舊的軟件源地址。

筆者覺得這樣每次手動更改軟件源是一件及其麻煩重復的勞動,于是編寫了一個自動更新最快軟件源的腳本,從此一勞永逸。

原理

最直觀的想法就是:對各個軟件源進行測速,選出最快的那個,之后將其替換為新的軟件源。

那么如何對各個軟件源測速呢?有兩種方法:

一、用ping命令 測量其平均響應時間 選出響應時間最短的那個

二、用wget命令 測量下載一個文件的總時間 選出耗時最少的那個

那么這兩種方法有什么區別呢?我們該用哪個呢?

前者選出的是響應時間最優的,后者選出的是下載速度最快的。我們都知道軟件源的作用是供客戶端下載更新軟件,所以當然是后者的方法更為準確,但筆者最終選擇了前者作為測速方案,因為前者的用戶體驗更好且代碼簡單易懂。設想,如果我們采用后者,那么需要從每個軟件源下載一個文件,并且這個文件不能太小,否則無法區分他們的速度,那么一個顯而易見的情況是腳本需要運行較長的時間。

雖然存在某些軟件源可能響應時間很短,而下載速度卻很慢的情況,但經過筆者的多次實驗,發現這樣的情況并不常見。

實現

首先測試用戶網絡狀態

利用

復制代碼 代碼如下:

local speed=`ping -W1 -c1 www.baidu.com 2> /dev/null | grep "^rtt" |  cut -d '/' -f5`

取出其平均響應時間 如果speed == “” 則說明網絡不通,提示用戶,且退出程序。 否則,說明網絡正常,繼續執行。

檢測軟件源列表文件是否存在

復制代碼 代碼如下:

test -f $SOURCES_MIRRORS_FILE

若不存在,提示用戶,且退出程序。

對每個軟件源地址進行測速

在測速之前清空上次運行的測速結果文件,之后將每個軟件源的測速結果(源地址 平均響應時間)寫入測速結果文件

對測速結果進行排序

復制代碼 代碼如下:

sort -k 2 -n -o $MIRRORS_SPEED_FILE $MIRRORS_SPEED_FILE

對每行記錄 按照平均響應時間升序排列

選出最快的軟件源

復制代碼 代碼如下:

head -n 1 $MIRRORS_SPEED_FILE | cut -d ' ' -f1 `

通過取已排序列表中的第一條,選出最快的軟件源

詢問用戶是否要使用該軟件源

用戶確認后,先對用戶之前的軟件源進行備份,然后再替換。

getfastmirror.sh腳本源代碼:

復制代碼 代碼如下:

#!/bin/bash

#Program:
#    This program gets the fastest ubuntu software sources from SOURCES_MIRRORS_FILE
#    and backup update /etc/apt/sources.list

#Author:  KJlmfe    www.freepanda.me

#History:
#    2012/12/6    KJlmfe    First release


VERSION="precise"  # precise is code of Ubuntu 12.04 if your ubuntu is not 12.04 please change
TEST_NETCONNECT_HOST="www.baidu.com"
SOURCES_MIRRORS_FILE="sources_mirrors.list"   
MIRRORS_SPEED_FILE="mirrors_speed.list"

function get_ping_speed()    #return average ping $1 time
{
    local speed=`ping -W1 -c1 $1 2> /dev/null | grep "^rtt" |  cut -d '/' -f5`
    echo $speed
}

function test_mirror_speed()    #
{
    rm $MIRRORS_SPEED_FILE 2> /dev/null; touch $MIRRORS_SPEED_FILE
   
     cat $SOURCES_MIRRORS_FILE | while read mirror
    do
        if [ "$mirror" != "" ]; then
            echo -e "Ping $mirror c"
            local mirror_host=`echo $mirror | cut -d '/' -f3`    #change mirror_url to host
   
            local speed=$(get_ping_speed $mirror_host)
   
            if [ "$speed" != "" ]; then
                echo "Time is $speed"
                echo "$mirror $speed" >> $MIRRORS_SPEED_FILE
            else
                echo "Connected failed."
            fi
        fi
    done
}

function get_fast_mirror()
{
    sort -k 2 -n -o $MIRRORS_SPEED_FILE $MIRRORS_SPEED_FILE
    local fast_mirror=`head -n 1 $MIRRORS_SPEED_FILE | cut -d ' ' -f1`
    echo $fast_mirror
}

function backup_sources()
{
    echo -e "Backup your sources.list.n"
    sudo mv /etc/apt/sources.list /etc/apt/sources.list.`date +%F-%R:%S`
}

function update_sources()
{
    local COMP="main restricted universe multiverse"
    local mirror="$1"
    local tmp=$(mktemp)

    echo "deb $mirror $VERSION $COMP" >> $tmp
    echo "deb $mirror $VERSION-updates $COMP" >> $tmp
    echo "deb $mirror $VERSION-backports $COMP" >> $tmp
    echo "deb $mirror $VERSION-security $COMP" >> $tmp
    echo "deb $mirror $VERSION-proposed $COMP" >> $tmp

    echo "deb-src $mirror $VERSION $COMP" >> $tmp
    echo "deb-src $mirror $VERSION-updates $COMP" >> $tmp
    echo "deb-src $mirror $VERSION-backports $COMP" >> $tmp
    echo "deb-src $mirror $VERSION-security $COMP" >> $tmp
    echo "deb-src $mirror $VERSION-proposed $COMP" >> $tmp

    sudo mv "$tmp" /etc/apt/sources.list
    echo -e "Your sources has been updated, and maybe you want to run "sudo apt-get update" now.n";
}

echo -e "nTesting the network connection.nPlease wait...   c"

if [ "$(get_ping_speed $TEST_NETCONNECT_HOST)" == "" ]; then
    echo -e "Network is bad.nPlease check your network."; exit 1
else
    echo -e "Network is good.n"
    test -f $SOURCES_MIRRORS_FILE

    if [ "$?" != "0" ]; then 
        echo -e "$SOURCES_MIRRORS_FILE is not exist.n"; exit 2
    else
        test_mirror_speed
        fast_mirror=$(get_fast_mirror)

        if [ "$fast_mirror" == "" ]; then
            echo -e "Can't find the fastest software sources. Please check your $SOURCES_MIRRORS_FILEn"
            exit 0
        fi

        echo -e "n$fast_mirror is the fastest software sources. Do you want to use it? [y/n] c"   
        read choice

        if [ "$choice" != "y" ]; then
            exit 0
        fi

        backup_sources
        update_sources $fast_mirror
    fi
fi

exit 0

sources_mirrors.list源碼:

復制代碼 代碼如下:

http://cn.archive.ubuntu.com/ubuntu/
http://run.hit.edu.cn/ubuntu/
http://mirrors.sohu.com/ubuntu/
http://mirrors.163.com/ubuntu/
http://mirrors.tuna.tsinghua.edu.cn/ubuntu/
http://mirrors.ustc.edu.cn/ubuntu/
http://mirrors.yun-idc.com/ubuntu/
http://ubuntu.cn99.com/ubuntu/

您可能感興趣的文章:
  • 詳解Ubuntu 16.04 幾個國內更新源
  • Ubuntu14.04和Ubuntu16.04更換阿里源的方法
  • Ubuntu17.04配置更換國內源的方法
  • Ubuntu 16.04 LTS中源碼安裝Python 3.6.0的方法教程
  • Ubuntu E: 無法獲得鎖 /var/lib/dpkg/lock-frontend - open (11: 資源暫時不可用)
  • Ubuntu使用國內源出現Hash Sum mismatch錯誤的解決
  • ubuntu制作本地源的實現方法
  • Ubuntu 20.04 apt 更換國內源的實現方法
  • 分享Ubuntu19無法安裝docker源問題
  • 怎么修改Ubuntu的源列表(source list)詳解

標簽:隨州 西藏 青島 雅安 南充 通遼 延邊 朝陽

巨人網絡通訊聲明:本文標題《Shell腳本實現自動檢測修改最快的Ubuntu軟件源》,本文關鍵詞  Shell,腳本,實現,自動檢測,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Shell腳本實現自動檢測修改最快的Ubuntu軟件源》相關的同類信息!
  • 本頁收集關于Shell腳本實現自動檢測修改最快的Ubuntu軟件源的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久精品一二三| 日韩欧美一区电影| 国产乱码精品一区二区三区五月婷| 综合中文字幕亚洲| 国产精品国产自产拍高清av王其| 国产清纯白嫩初高生在线观看91 | 久久女同精品一区二区| 日韩一本二本av| 精品蜜桃在线看| 欧美国产精品一区| 亚洲男人都懂的| 亚洲激情自拍偷拍| 日韩av午夜在线观看| 精品亚洲aⅴ乱码一区二区三区| 久久成人麻豆午夜电影| 丁香桃色午夜亚洲一区二区三区| 国产精品123区| 9色porny自拍视频一区二区| 91麻豆6部合集magnet| 欧美精品第1页| 久久久久9999亚洲精品| 亚洲色图色小说| 日韩成人伦理电影在线观看| 国产在线精品免费av| 一本色道**综合亚洲精品蜜桃冫| 欧美日韩在线电影| 久久久噜噜噜久久中文字幕色伊伊 | 国产偷国产偷精品高清尤物| 中文字幕在线免费不卡| 亚洲综合一区二区| 国产精品乡下勾搭老头1| 91色视频在线| 久久这里只有精品首页| 亚洲欧美韩国综合色| 久久99日本精品| 91蝌蚪porny九色| 精品国内二区三区| 一区二区三区电影在线播| 久久综合综合久久综合| 色婷婷久久久亚洲一区二区三区 | 精品福利一二区| 一区二区三区四区在线免费观看 | 色老汉一区二区三区| 日韩美一区二区三区| 亚洲四区在线观看| 国产精品一区二区在线观看网站| 欧美色网一区二区| 国产精品另类一区| 精品中文字幕一区二区小辣椒| 99热精品一区二区| 精品国产乱码久久| 日本午夜精品一区二区三区电影| 91美女在线视频| 国产欧美一区二区三区在线看蜜臀| 日韩精品高清不卡| 欧美日韩激情在线| 亚洲精品美腿丝袜| 91亚洲国产成人精品一区二区三| 久久精品人人做| 久久精品国产99久久6| 欧美日韩一区二区欧美激情| 亚洲日本在线观看| 91免费看视频| 中文字幕字幕中文在线中不卡视频| 久久99热国产| 精品盗摄一区二区三区| 久久国产视频网| 日韩欧美国产小视频| 免费精品视频在线| 日韩欧美国产综合| 黑人巨大精品欧美黑白配亚洲| 精品日韩一区二区三区| 激情丁香综合五月| 国产日韩精品久久久| 成人黄色片在线观看| 国产精品久久久久影院亚瑟 | 国产成人精品免费| 久久精品亚洲一区二区三区浴池| 国产一区二区网址| 久久九九99视频| 成人精品视频.| 中文字幕中文字幕一区| 91网站在线播放| 天天影视网天天综合色在线播放 | 极品少妇一区二区三区精品视频| 精品欧美乱码久久久久久1区2区| 精品午夜久久福利影院| 中文无字幕一区二区三区| 成人av动漫在线| 亚洲一二三四在线| 日韩西西人体444www| 国产不卡高清在线观看视频| 国产精品高潮呻吟| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲综合免费观看高清完整版在线 | 北条麻妃国产九九精品视频| 中文字幕一区免费在线观看| 在线亚洲一区观看| 日韩高清在线不卡| 国产精品电影院| 欧美日韩精品一区二区三区四区| 麻豆精品在线视频| 国产精品免费av| 在线电影一区二区三区| 国产成人av影院| 亚洲成人一区在线| 国产日韩欧美麻豆| 3d动漫精品啪啪一区二区竹菊| 国产在线视频精品一区| 亚洲一线二线三线久久久| 欧美成人一区二区三区片免费 | 一个色妞综合视频在线观看| 日韩欧美中文字幕公布| 成人毛片老司机大片| 三级一区在线视频先锋| 国产精品久久免费看| 欧美一区二区久久久| 一本色道久久综合狠狠躁的推荐 | 中文字幕国产精品一区二区| 欧美日韩的一区二区| 99国产精品国产精品毛片| 热久久一区二区| 一区二区欧美国产| 亚洲欧洲日韩女同| 国产欧美日韩三区| 日韩免费电影网站| 欧美久久久影院| 色婷婷综合在线| aaa欧美色吧激情视频| 国产在线视频一区二区三区| 亚洲成av人影院在线观看网| 亚洲欧美激情一区二区| 中文字幕欧美一区| 国产精品乱人伦| 国产精品久久久久永久免费观看| 精品成人免费观看| 日韩一二三四区| 日韩欧美高清dvd碟片| 337p亚洲精品色噜噜噜| 欧美三级电影精品| 欧美性做爰猛烈叫床潮| 色999日韩国产欧美一区二区| 成人看片黄a免费看在线| 国产成人丝袜美腿| 国产成人一区在线| 国产超碰在线一区| 成年人网站91| 岛国av在线一区| 不卡视频一二三四| 色婷婷综合久久| 99久久婷婷国产综合精品| 91日韩一区二区三区| 一本在线高清不卡dvd| 欧美性一二三区| 欧美日韩精品一区二区三区| 欧美日韩在线三级| 欧美一级精品在线| 欧美成人在线直播| 国产精品午夜电影| 一区二区三区中文在线| 午夜影视日本亚洲欧洲精品| 天堂成人国产精品一区| 久久精品国产久精国产爱| 极品少妇一区二区| 成人一区二区三区在线观看| 成人久久久精品乱码一区二区三区| 99久久精品免费看国产免费软件| 色乱码一区二区三区88| 欧美日韩国产首页| 2023国产精品视频| 中文字幕在线不卡一区| 亚洲第一在线综合网站| 美腿丝袜亚洲综合| caoporen国产精品视频| 欧美裸体一区二区三区| 国产欧美一区二区三区在线老狼| 亚洲另类一区二区| 国内成人精品2018免费看| 不卡视频一二三| 日韩午夜激情视频| 日韩毛片一二三区| 免费观看久久久4p| 不卡一区二区三区四区| 在线播放国产精品二区一二区四区| 国产亚洲欧美一级| 香港成人在线视频| 成人美女视频在线观看| 欧美男生操女生| 国产精品成人在线观看| 久久国产精品无码网站| 91国在线观看| 中文字幕欧美区| 麻豆久久久久久| 欧美午夜精品免费| 国产精品视频你懂的| 久草中文综合在线| 精品视频1区2区3区| 中文欧美字幕免费| 经典三级在线一区| 91精品国产综合久久福利|