Чтение сеанса экрана GNU без прикрепления

Самый простой способ - использовать команду at . Поскольку at позволяет использовать временную спецификацию, вы можете использовать ее так:

at 12:00 PM tomorrow + 30 minutes

Итак, в вашем случае вы хотели бы использовать что-то вроде этого:

at 12:00 PM tomorrow + $(($RANDOM % 120)) minutes

После ввода этой команды вы можете ввести свои команды, например ls и завершите с помощью ctrl + d

. Если вы не знакомы с командой at, прочтите этот учебник .

1
25.08.2018, 17:53
1 ответ

expectможет регистрировать транзакцию сеанса и может оставаться без присмотра после некоторого начального взаимодействия. Это позволит вам запустить команду, взаимодействовать с ней, а затем набрать ~., чтобы передать все на expect, пока программа не завершит работу. Между тем, out.1535209800или что-то еще можно проверить.

#!/usr/bin/env expect
log_file out.[clock seconds]
spawn -noecho sh  ;# here be the command to run
interact {
  ~. { return }   ;# type this when done interacting
  ~~ { send "~" } ;# or this to get a literal ~ in the shell
}
if {[catch {
  expect {
    eof { exit }
    match_max { exp_continue }
    timeout { exp_continue }
  }
} oops ]} { puts stderr $oops; exit 1 }
0
28.01.2020, 00:30

Теги

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