ネットワーク接続がないため、apt-getアップデートが失敗したことをどのように検出しますか?

ネットワーク接続がないため、apt-getアップデートが失敗したことをどのように検出しますか?

コマンドを実行するスクリプトがありますが、apt-get updateインターネットがないため、スクリプトは失敗を検出できません。
つまり、ルートapt-getで実行されていないとcode 100

if apt-get update
then
    echo "success!"
else
    echo "something went wrong
fi

ただし、apt-get updateインターネット接続なしで実行するとエラーメッセージが生成されます。一部はSTDOUT、一部はSTDERRです。

これはSTDERRに移動します

...
W:取得に失敗しました。http://archive.ubuntu.com/ubuntu/dists/trusty/InRelease
W:取得に失敗しました。http://security.ubuntu.com/ubuntu/dists/trusty-security/InRelease
...

これは標準出力に移動します

...
Err http://archive.ubuntu.com trusty-updates Release.gpg
  Temporary failure resolving 'archive.ubuntu.com'
Ign https://deb.nodesource.com trusty InRelease
Ign https://deb.nodesource.com trusty Release.gpg
...

ただし、最終的にはまだ終了を返します0。インターネットにアクセスできないために発生するエラーを
どのように検出しますか?apt-get upgrade

答え1

よりうまく機能できるスタブは次のとおりです。

if apt-get update 2> /tmp/apt-get-errors
then
    if grep -q "^W: Failed to fetch" /tmp/apt-get-errors
    then
      echo "success!"
    else
      echo apt-get failed to fetch
    fi
else
    echo "something went wrong
fi
rm /tmp/apt-get-errors

デフォルトのアイデアは、apt-getのstderr出力をファイルとしてキャプチャし、成功を宣言する前にそのファイルから既知のエラーパターンを取得することです。

mktempとより良いgrepモードを使用すると改善することができますが、今はapt-getをテストする方法はありません。

答え2

これが完璧かどうかはわかりませんが、インターネット接続が機能しているかどうかをテストできますが、インターネット接続がないためにエラーが発生したかどうかはわかりません。

cd [directory]
wget [just download any file aslong as you know the name.]
[ -f /[currentDir]/[filename] ] && wall "Internet Connection Is Existant" || wall "Any errors are likely caused by internet issues."
rm [file name just so it doesn't mess things up later.]

「壁」をエコーに変更できます。私は多くのSSHを使用しているので、友達を悩ませたいと思います。 (Debian の 1/2、SSH の 1/2.. 端末アプリやシェルから)

答え3

私はこの--error-on=anyオプションが意図した目的に合うと思います。しかし、これまで実際に使った経験はほとんどありません。私はこれがaptandの比較的新機能だと思いますapt-get

-eany, --error-on=any
    Fail the update command if any error occured, even a transient one.
apt update -eany
apt update --error-on=any
apt-get update -eany
apt-get update --error-on=any

ノートパソコンのWi-Fiをオフにして起動するとapt update --error-on=any; echo $?印刷さechoれます100

関連情報