Raspbian работает без головы, выполняя скриптовые процедуры на интернет-странице с помощью текстового браузера

Попробуйте это,

 while read i; do 
    LineNO=$(echo $i |awk '{print $3}'); 
    echo "$i" |  awk -F 'FIELD' -v a=$LineNO '{for(j=2;j<=NF;j++) print a$j}'| awk -F '[" *]' '{print $1","$2","$3}'; 
 done < input

для файла.gz

gunzip < input.gz | while read i; do 
    LineNO=$(echo $i |awk '{print $3}'); 
    echo "$i" |  awk -F 'FIELD' -v a=$LineNO '{for(j=2;j<=NF;j++) print a$j}'| awk -F '[" *]' '{print $1","$2","$3}'; 
 done
  • gunzip, чтобы прочитать файл.
  • whileчитать построчно.
  • LineNoдля сохранения номера строки.
  • FIELDдля разделения строки разделителем.
  • forдля печати из второго столбца.
  • aдля печати LineNo.
  • второй awkдля форматирования вывода с разделителем-запятой.
0
04.11.2021, 21:44
1 ответ

Я отвечаю на свой вопрос, так как Fosforo вдохновил меня попробовать несколько способов, которые решили проблему.


С вашим текущим набором активных программ вы не можете управлять окнами в xvfbс помощью xdotool.

xdotoolпо-прежнему разрешено получать информацию, например, вы можете узнать PID вашего окна xterm, выполнив команду:

DISPLAY=:10 xdotool search --name "xterm"

В вашем случае вы получили PID 2097165 для активного сеанса xterm.

Теперь вы обычно активируете окно с помощью команды:

DISPLAY=:10 xdotool windowactivate 2097165

Но когда вы запустите xvfb, это вернет следующую ошибку:

Your windowmanager claims not to support _NET_ACTIVE_WINDOW, so the attempt to activate the window was aborted.
xdo_activate_window on window:2097165 reported an error

Таким образом, вы не можете активно манипулировать фокусом -Вы можете узнать, какой фокус по умолчанию у вашего DISPLAY, выполнив эту команду:

DISPLAY=:10 xdpyinfo | grep focus

Это сообщит вам:

focus:  PointerRoot

Фокус как PointerRootозначает, что все, что вы вводите, вводится в окно, которое находится под вашим курсором.

Используя PID ранее, вы быстро найдете положение и размер окна xterm, выполнив команду:

DISPLAY=:10 xwininfo -id 2097165

Это тебе сказали:

  Absolute upper-left X:  0
  Absolute upper-left Y:  0
  Relative upper-left X:  0
  Relative upper-left Y:  0
  Width: 484
  Height: 316
...

С помощью xdotoolвы можете аналогичным образом получить местоположение мыши:

DISPLAY=:10 xdotool getmouselocation

Это говорит о том, что местоположение вашей мыши:

x:512 y:384 screen:0 window:904

Другими словами; Ваша мышь не находится в -верхней части окна xterm, поэтому все, что вы вводите, используя тип xdotool, не помещается в окно xterm.

Существуют два очень простых решения;

  • Переместите мышь
  • Увеличьте окно xterm.

Поскольку вы знаете и контролируете разрешение экрана при запуске xvfb, второй вариант самый простой.

Вы просто добавляете -geometryк аргументу запуска xterm, поэтому он становится:

sudo Xvfb :10 -ac -screen 0 1024x768x24
DISPLAY=:10 xterm -geometry 1024x768+0+0 &

Это сделает окно xterm полноразмерным и, таким образом, гарантирует, что мышь находится над окном, после чего команды xdotool, такие как ключ и тип, будут работать.

Другими словами, добавление аргумента -geometryв xterm является ответом на ваш вопрос.

0
05.11.2021, 18:44

Теги

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