はじめに
多くの場合、ユーザーがDoubleGIS(広告とは見なさない)ディレクトリをインストールするように求められます。特に、ユーザーが出張に出かける場合、他の都市の人と通信する場合です。
他のシステム管理者と同様に、私はすべての都市のDublGISを自動的に一元的に更新することを考えていました。
いくつかの理由により、Linuxを使用してこれを行うことが決定されました。
その理由の1つは、このオペレーティングシステムの集中更新の解決策がなかったことです。
もう1つは、Linuxユーザー用の1つのアーカイブにすべてのデータベースとシェルがあるサイトにファイルがないことです。
この記事では、Linuxコンソールツールを使用してすべての都市のDublGISを更新する方法を説明します。
何が必要ですか?
- Linuxサーバー(Fedora 15で動作します)
- wget
- sed、grep
- 解凍する
- お気に入りのテキストエディター
スクリプトを書く
ここに私が得たスクリプトがあります。
市へのリンクを含むWebページをダウンロードします。
wget --no-proxy --html-extension -P/root/2gis 'http://www.2gis.ru/how-get/linux/'
ダウンロードしたすべてのhtmlファイル、リンクのあるすべての行から選択し、並べ替え、重複を削除し、一時的なindex.tmpファイルに書き込みます。
cat /root/2gis/*.html | grep http:\/\/ |sort |uniq >/root/2gis/index.tmp
Webページを削除します-不要になりました。
rm -f /root/2gis/*.html
この不気味なチームでは、Index.tmpを処理して、how-get行のすべてのリンクを取得し、これらのリンクからすぐにWebページをダウンロードしました。
cat /root/2gis/index.tmp | grep -o [\'\"\ ]*http:\/\/[^\"\'\ \>]*[\'\"\ \>] | sed s/[\"\'\ \>]//g | grep how-get | xargs wget --no-proxy -r -p -np -l1 -P/root/2gis --tries=10 --html-extension --no-directories --span-hosts --dot-style=mega
index.tmpを削除しました-邪魔になります。
rm -f /root/2gis/index.tmp
html拡張子を持つすべてのファイルを1つのindex2.tmpに貼り付けました。
cat /root/2gis/*.html >/root/2gis/index2.tmp
ダウンロードしたWebページを削除します。
rm -f /root/2gis/*.html
ここで最も興味深いのは、更新プログラムへのリンクを引き出して、それらのファイルをダウンロードすることです。
「/ last / linux /」という文字列のリンクのindex2.tmpを処理し、並べ替え、重複を削除し、新しいファイルのみを2gis.archフォルダーにすぐにダウンロードします
cat /root/2gis/index2.tmp | grep -o [\'\"\ ]*http:\/\/[^\"\'\ \>]*[\'\"\ \>] | sed s/[\"\'\ \>]//g | grep "/last/linux/" | sort | uniq | xargs wget --no-proxy -nc -P/root/2gis.arch --tries=3 --html-extension --no-directories --span-hosts --dot-style=mega
すべての一時ファイルを削除します。
rm -fr /root/2gis/index*
アーカイブフォルダーからすべてのzipファイルをターゲットフォルダー/ root / 2gis /
unzip -o /root/2gis.arch/\*.zip -d /root/2gis/
重複しないように、20日より古いアーカイブを削除します
find /root/2gis.arch/ -name * -mtime +20 |xargs rm -fr
/ root / 2gisフォルダーには、すべての都市用の解凍されたDoubleGISがあり、/ root / 2gis.archフォルダーには、サイトからダウンロードしたLinuxユーザー用のアーカイブがあります。
cronで実行するスクリプトを配置します。
毎日設定しますが、スクリプトは不要なファイルをダウンロードしません。
おわりに
DublGISのサイト構造は絶えず変化しています。スクリプトが更新をダウンロードしない可能性があります。 これを定期的に監視することをお勧めします。
2011年12月31日更新
スクリプトを編集しました。 不要なものをすべて削除しました。
新しいオプション。
wget -O - 'http://www.2gis.ru/how-get/linux/' 2>/dev/null | sed "s/^.*\(http:\/\/[^\"\'\ ]*\/how-get\/linux\/\).*$/\1/g" |\
grep "how-get\/linux"|sort|uniq|xargs wget -p -O - 2>/dev/null |sed "s/^.*\(http:\/\/[^\"\'\ ]*\/last\/linux\/\).*$/\1/g"|grep "last\/linux"| sort|uniq|\
xargs wget -N -P/root/2gis.arch
unzip -o /root/2gis.arch/\*.zip -d /root/2gis/
PS建設的な批判をしてくれたkriomantに感謝します。
明けましておめでとうございます!