Извлечь данные из таблицы HTML и поместить их в текстовый файл с оболочкой
Мне понадобится сценарий оболочки, чтобы получить общедоступный пароль для VPN с сайта (который обновляет пароль каждый день более или менее). Пароль представляет собой HTML-таблицу в определенной строке HTML-кода веб-страницы. После того, как я восстановил пароль (слово, состоящее из 5 символов), я хотел бы поместить его в конец простого текстового файла. Мне нужен такой скрипт, чтобы автоматически обновлять пароль в клиенте OpenVPN моего маршрутизатора на базе OpenWrt.
Это веб-страница, о которой я говорю, и это строка с номером 265, где указан пароль (есть два варианта пароля, не имеет значения, какой из них выбирает скрипт:
<td>1<td>in1.vpnjantit.com<td>53,992,1194,25000<td><a href='http://www.vpnjantit.com/assets/in1.vpnjantit.com.zip'>in1.vpnjantit.com.zip</a><td>vpnjantit.com<td>x3bu7<td>2018-03-31 at 22:00<tr><tr><td>2<td>in2.vpnjantit.com<td>53,443,1194,25000<td><a href='http://www.vpnjantit.com/assets/in2.vpnjantit.com.zip'>in2.vpnjantit.com.zip</a><td>vpnjantit.com<td>x3bu7<td>2018-03-31 at 22:00<tr></table></div>
Файл, куда я хочу поставить пароль, будет очень простым:
vpnjantit.com
passwd
Первая строка - это имя пользователя, и оно всегда будет одинаковым: "vpnjantit.com". Вторая строка - пароль из 5 символов. Мне нужно, чтобы скрипт сначала удалял вторую строку файла, а затем помещал пароль из html-файла во вторую строку (замените старый пароль новым).
Я оглянулся и попытался что-то сделать с помощью последовательности awk, curl, cat и других команд, но я не смог получить желаемый результат. На самом деле понятия не имею, как это реализовать.
Заранее большое спасибо за любые советы!
1 ответ
Я использовал nokogiri
Хотя есть и другие инструменты.
echo vpnjantit.com > file.txt # first line
curl http://www.vpnjantit.com/free-openvpn-india.html | nokogiri -e 'puts $_.at_css("table > tr > td:nth-child(6)").text >> file.txt # second line
Это заменит файл сразу (удалите его и создайте новый).
Обратите внимание, что это может сломаться в любое время даже при незначительных изменениях формата.