回答:
方法1
NetworkManager.confはロギングを許可しますが、それでも明らかにsyslogに記録されます。ただし、kern.logにもあります。
grep 'associated' /var/log/kern.log | tail -n1
Jun 21 17:08:25 anaconda kernel: [ 4910.819781] wlan1: associated
方法2
NetworkManagerは最後の接続時間を/var/lib/NetworkManager/timestamps
保存し、UNIXエポック時間形式(1970年からの秒数)でファイルにソートされていることがわかりました。私の場合は、たとえば次のようになります。
$ cat /var/lib/NetworkManager/timestamps
[timestamps]
c562ac2d-8911-4273-b165-ed1495b28c9a=1432777079
46cfcdd9-d095-418f-acd6-0a7ca282bb9a=0
d81fb3d0-1717-42c0-903d-4622c2381597=1434895707
b0bdefe6-df88-49bb-83d8-154dd21d77d9=1433093286
最新のエントリを表示するには
date --date=@"$( awk -F'=' 'BEGIN {var=0}{if(var<$2) var=$2;} END{print var}' /var/lib/NetworkManager/timestamps )"
Awkは最大エポック時間(つまり最新)を検索し、日付はそれを人間が読める形式に変換します。
また、このファイル(/var/lib/NetworkManager/timestamps
)は、接続の編集グラフィカルメニューで最後の接続時間を表示するために使用されると思われます
問題は、アクセスポイントにまだ接続している場合、GUIの方法ではnow
なく、接続が最後に確立された時刻が表示され続けることです。
man NetworkManager.conf
、ファイルは次のとおりです/etc/NetworkManager/NetworkManager.conf
。これは、デーモンでのロギングを有効にした後にのみ機能しますが、残念ながら、マシンがこのために設定されていないと仮定して、これを後で確認する必要があります。とにかく、kern.log
ソリューションと他の場合に役立つ可能性のある最初のソリューション
/var/log/syslog
最後にネットワークに接続したときに表示されるファイルを確認できます。
例
Jun 21 08:00:00 Ubuntu dhclient: DHCPREQUEST of 192.0.0.0 on wlan0 to 192.0.0.0 port 67 (xid=0xec7c6e7)
grepコマンドを実行して、必要なものだけをログからプルできます。
< /var/log/syslog grep DHCPREQUEST
< /var/apt/syslog grep DHCPREQUEST
やバリエーションなど、もう少しユーザーフレンドリーなソリューションを提案したいと思います。
DHCPREQUEST
信頼できません。私は午後からオンラインで、たくさんのDHCPリクエストがありました。
でCONNECTED_GLOBAL
見つけlink connected
た後に確認してください/var/log/syslog
/link connected/,/CONNECTED_GLOBAL/
% awk '/link connected/,/CONNECTED_GLOBAL/ {line=$0} END{print line}' /var/log/syslog
Jun 21 11:12:54 sturm NetworkManager[736]: <info> NetworkManager state is now CONNECTED_GLOBAL Jun 21 11:12:54
% awk '/link connected/,/CONNECTED_GLOBAL/ {month=$1;day=$2;time=$3} END{print month,day,time}' /var/log/syslog
Jun 21 11:12:54
sudo
最初のものは必要ありませんが、これらのどれも機能していません。POSIXlyのせいだと思います[[:space:]]
。どのバージョンawk
を実行していますか?
sudo
削除。GNU Awkの4.1.1、API:1.1(GNU MPFR 3.1.2-P11、GNU MP 6.0.0)
%
)下の行に出力がある場合;
%
。これ以外は完璧です!
これを行う「正しい」方法が見つからない場合は、いつでも独自のものを製造できます。
次のbash関数は、オンライン(インターネット)かどうかを示します。
ループで呼び出してからスリープするスクリプトを作成し、最後の日付と時刻をファイルに記録するだけです(上書きするため、最新の値のみが保持されます)。
ループにコードを追加して、最初に呼び出されてログに記録されるようにチェックする必要があります(したがって、初期状態が正しく設定されます)。
その後、状態が最初にオフラインになったときと、オフラインになってから最初にオンラインになったときにのみ、再度ログを記録します。説明するよりもコーディングする方が簡単です。;)
これは、ループで使用する遅延(スリープ)の長さ(システムリソースを大量に消費する可能性のある非常にタイトなループにならないようにするため)によって、精度が制限されます。または実行されていないとき。
ユーザーが$ HOME / .profileファイルから実行してログインすると、スクリプト自体は(バックグラウンドジョブとして(&
呼び出しの最後に)、おそらくnohup
親プロセスが終了した場合に実行を続けるために)開始できます。デスクトップ自動起動ユーティリティ(KDEまたはGnome)を使用して、まだ実行されていないかどうかを定期的にチェックするcronジョブから、または起動システム(init / systemd / etc。それ。)
希望どおりの動作をするこのようなものが見つからない場合、それを実行する独自のスクリプトを作成し、バックグラウンドでデーモンのように実行するのはそれほど難しくありません。
可能であれば、通常のユーザーアカウントから実行することをお勧めします-CやPythonなどの堅牢な言語でコーディングしない限り-ルート権限で実行されるシェルスクリプトは多くの場合セキュリティリスクを引き起こすためです。
このアプローチには別の問題があります。pingがタイムアウトして、誤ったオフラインステータスが表示されることがあります。
私は完全なスクリプトoffline_alertを持っています。これは、あなたが望むものとほとんど反対です-オフラインになると警告します-しかし、コードは役に立つかもしれません。pingタイムアウトによる誤検知を削減しようとする、より優れたオフライン機能があります。
function offline {
## Test if offline
## Returns 0 if online, 2 if offline
local RC
ping -c 1 google.com > /dev/null 2>&1
RC=$?
##echo "offline returning [${RC}]"
return $RC
}
インターネットで動作するサービス/デーモンログを確認する1つの方法。たとえば、NTP(Network Time Protocol)の更新。
dpkg -L ntpdate
ネットワーク状態フックを参照してください
まあ、Ubuntuデスクトップのログを確認したので、ネットワークがアップするたびに更新が実行され、最後の更新が失敗した場合は少し遅れて試行を続けます。接続しntp.ubuntu.com
ます。
(注、コメントの出力に最初の列を追加しました)
$ grep -r ntpdate /var/log/syslog*
1st_trial Jul 14 00:35:56 user-VirtualBox ntpdate[774]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 14 00:35:56 user-VirtualBox ntpdate[774]: no servers can be used, exiting
2nd_trial Jul 14 03:38:57 user-VirtualBox ntpdate[2571]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 14 03:38:57 user-VirtualBox ntpdate[2571]: no servers can be used, exiting
3rd_trial Jul 14 03:46:09 user-VirtualBox ntpdate[2782]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 14 03:46:09 user-VirtualBox ntpdate[2782]: no servers can be used, exiting
4th_trial Jul 14 03:47:48 user-VirtualBox ntpdate[2917]: step time server 91.189.89.199 offset 3.458355 sec
1st_trial Jul 14 10:23:07 user-VirtualBox ntpdate[728]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 14 10:23:07 user-VirtualBox ntpdate[728]: no servers can be used, exiting
2nd_trial Jul 14 10:37:22 user-VirtualBox ntpdate[2099]: step time server 91.189.89.199 offset 2.021103 sec
dis-/re-con Jul 14 15:27:09 user-VirtualBox ntpdate[20174]: step time server 91.189.89.199 offset 1.677465 sec
1st_trial Jul 14 23:55:00 user-VirtualBox ntpdate[807]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 14 23:55:00 user-VirtualBox ntpdate[807]: no servers can be used, exiting
2nd_trial Jul 15 00:00:24 user-VirtualBox ntpdate[2041]: step time server 91.189.94.4 offset 1.619839 sec
1st_trial Jul 15 05:39:08 user-VirtualBox ntpdate[767]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 15 05:39:08 user-VirtualBox ntpdate[767]: no servers can be used, exiting
2nd_trial Jul 15 05:39:21 user-VirtualBox ntpdate[1088]: step time server 91.189.94.4 offset 2.897077 sec
1st_trial Jul 15 05:49:40 user-VirtualBox ntpdate[787]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 15 05:49:40 user-VirtualBox ntpdate[787]: no servers can be used, exiting
2nd_trial Jul 15 05:49:50 user-VirtualBox ntpdate[1101]: adjust time server 91.189.94.4 offset 0.090520 sec
reconnect Jul 15 05:55:50 user-VirtualBox ntpdate[2251]: adjust time server 91.189.94.4 offset 0.261432 sec
reconnect Jul 15 06:04:53 user-VirtualBox ntpdate[2702]: step time server 91.189.94.4 offset 0.525658 sec
Ubuntu 14.04 LTS 64Bitデスクトップおよびサーバーエディションでは、デフォルトでインストールされていることを確認しています。
VMで試してみましたが、接続または再接続する時間のみが表示されます(インターネットが利用可能な場合)。欲しいものではありません(前回は接続されていました)
syslogはローテーションログです。古い圧縮されたログも含めてすべてのログを検索する場合は、 zgrep
zgrep -ih ntpdate /var/log/syslog* | sort -bn -k2
ntpdate
はデフォルトでインストールされますが、個別のパッケージで提供されるntpd
/ openntpd
daemon / service はインストールされません。時刻と日付を間違ったものに変更したことを確認するには、切断してから再接続します。
ntpdate
ために使用できcron
、サービス(ntpd / openntpd)を実行した場合と同じ結果になります。しかし、デフォルトの構成を探していて、追加の調整は必要ありませんか?