Linuxコンソールツールを使用したDoubleGISの更新

はじめに


画像
多くの場合、ユーザーがDoubleGIS(広告とは見なさない)ディレクトリをインストールするように求められます。特に、ユーザーが出張に出かける場合、他の都市の人と通信する場合です。

他のシステム管理者と同様に、私はすべての都市のDublGISを自動的に一元的に更新することを考えていました。

いくつかの理由により、Linuxを使用してこれを行うことが決定されました。
その理由の1つは、このオペレーティングシステムの集中更新の解決策がなかったことです。
もう1つは、Linuxユーザー用の1つのアーカイブにすべてのデータベースとシェルがあるサイトにファイルがないことです。

この記事では、Linuxコンソールツールを使用してすべての都市のDublGISを更新する方法を説明します。

何が必要ですか?




スクリプトを書く


ここに私が得たスクリプトがあります。

市へのリンクを含む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に感謝します。
明けましておめでとうございます!

Source: https://habr.com/ru/post/J135528/


All Articles