Как мне открыть внутреннюю веб-страницу и войти в систему без ввода данных пользователем в LINUX?

Обойти это непросто.

Либо вы позволяете lessиспользовать альтернативный экран, чтобы оставить исходный нетронутым, либо (не используете-X).

Нельзя ожидать, что lessвосстановит экран в том виде, в котором он был, и начнет использовать альтернативный экран после того, как прочитает всю страницу.

Нам нужно как-то подождать, пока хотя бы одна страница или eof не будут прочитаны, прежде чем запустить lessв правильном режиме и отправить данные. Что-то вроде:

page_stdin() {
  awk -v l="${LINES:=$(tput lines)}" '
    cmd {print | cmd; next}
    {lines = lines $0 ORS}
    NR == l {cmd = "less"; printf "%s", lines | cmd}
    END {if (!cmd) printf "%s", lines | "less -FX"}'
}
mypager() {
  if [ "$#" -eq 0 ]; then
    page_stdin
  else
    for file do page_stdin < "$file"; done
  fi
}

(с GNU awk, вы можете заменить ORSна RT, чтобы не добавлять завершающую новую строку, если ее не было изначально ).

Но это означает, что вы не начнете видеть вывод переданной команды в cmd | mypagerдо тех пор, пока он не будет заполнен на всю страницу или не завершится вывод. (попробуйте, например, seq 200 | pv -qL40 | mypagerпо сравнению сseq 200 | pv -qL40 | less).

Обратите внимание, что он предполагает, что вы не используете такие вещи, как LESS=-sи будут обмануты строками, большими, чем экран, если у вас нет LESS=-S.

0
16.06.2021, 12:31
2 ответа

Мне действительно удалось получить работающий скрипт с помощью xdotool, как было предложено ранее, однако, когда я пытаюсь поставить в очередь команды из моего исходного скрипта:

#!bin/bash
xset s noblank
xset s off
xset -dpms

unclutter -idle 0 -root &

chromium-browser --noerrdiaglogs --disable-infobars --kiosk https://192.168.0.1/webconsole

sleep 25s

xdotool search --onlyvisible --class "chromium" windowfocus key Tab
xdotool key Tab
xdotool type password
xdotool key Return

Моя единственная проблема заключается в том, что мой скрипт зависает на этапе открытия Chromium, жалуясь на ошибку рукопожатия SSL, которая препятствует запуску второй части скрипта. Возврат с ошибкой:

libEGL warning: DRI2: failed to authenticate
[ssl_client_socket_impl.cc(962) handshake failed; returned -1 SSL error code 1, net_error -202

Эта ошибка будет повторяться несколько раз, и попытка принудительно закрыть этот аспект скрипта приведет к естественному закрытию веб-страницы.

Что посоветуете?

0
28.07.2021, 11:24

В конце концов мне удалось заставить это работать. Я запустил «Браузер Chromium -», и мой пароль ввел скрипт с помощью xdotool, однако я запустил их одновременно с помощью & и переместил свой xdotool в другой скрипт, и теперь это сработало для меня.

chromium-browser --noerrdiaglogs --disable-infobars --kiosk https://192.168.0.1/webconsole & /bin/bash /home/pi/test.sh

С Test.sh, содержащим:

#!bin/bash

xdotool search --onlyvisible --class "chromium" windowfocus key Tab
xdotool key Tab
xdotool type password
xdotool key Return
sleep 9999999h

Была добавлена ​​команда «Сон», так как после завершения этого скрипта, по сути, завершалась вся задача. Всем спасибо за советы и время!:)

0
28.07.2021, 11:24

Теги

Похожие вопросы