войдите в диспетчер рабочего стола, используя команды, введенные на другом tty

Вы должны изменить эту строку и добавить в нее созданный вами каталог, как показано ниже.

sshpass -p 'PASSWORD' scp /dbbackup/backupdb/ontape/fullsize/* "$server/$(date +%Y-%m-%d)"

Вместо этого вы также можете использовать rsync, так как он создаст каталог последнего уровня в целевом пути, если он не существует и нет необходимости mkdirв качестве дополнительной команды.

sshpass -p 'PASSWORD' rsync /dbbackup/backupdb/ontape/fullsize/* "$server/$(date +%Y-%m-%d)"

это создаст каталог из "$(date +%Y-%m-%d)", если он не существует в пути назначения.

Таким образом, в вашем скрипте, поскольку вы собираетесь копировать в 2 пути назначения и сначала создаете каталоги, вы можете сделать это только с помощью приведенного ниже скрипта.

for dest in dest1 dest2; do 
    sshpass -p 'PASSWORD' rsync -av /path/to/src/* "$dest/$(date +%Y-%m-%d)"
done

Обратите внимание, что использование этого способа передачи пароля является плохой практикой, так как он виден другим пользователям, имеющим доступ к вашей системе или может просматривать их с помощью команды ps -aux. Вместо этого вы можете установить аутентификацию с помощью publikKey .

ssh-keygen -t rsa
ssh-copy-id USER@HOST 

0
14.11.2019, 09:53
3 ответа

Этот вопрос, вероятно, связан с:

Удаленный запуск сеанса на дисплее :0 а также Удаленный запуск x11vnc, когда X-сервер уже запущен

В этом ответе я буду использовать systemd в качестве диспетчера служб, SDDM в качестве диспетчера рабочего стола и x11vnc в качестве сервера VNC. Для разных ресурсов адаптация не задействована.

Если вы загрузили свой компьютер удаленно, например, через пробуждение -по -локальной сети, и у вас нет физического доступа к клавиатуре, чтобы ввести пароль пользователя на экране входа в KDE, вы не сможете откройте X-дисплей через SSH, просто запустив сеанс VNC, например

$ x11vnc --display $DISPLAY

Вывод команды будет каким-то подробным,но прочитав его, вы найдете что-то вроде строк

20/12/2019 19:32:35 *** XOpenDisplay failed ($DISPLAY) *** x11vnc was unable to open the X DISPLAY: "$DISPLAY", it cannot continue. *** 

, так как сеанс X -еще не аутентифицирован.

Если мы прочитаем вывод дальше, то найдем

** If NO ONE is logged into an X session yet, but there is a greeter 
login program like "gdm", "kdm", "xdm", or "dtlogin" running, you
will need to find and use the raw display manager MIT-MAGIC-COOKIE 
file. Some examples for various display managers:

gdm: -auth /var/gdm/:0.Xauth -auth /var/lib/gdm/:0.Xauth
kdm: -auth /var/lib/kdm/A:0-crWk72
     -auth /var/run/xauth/A:0-crWk72
xdm: -auth /var/lib/xdm/authdir/authfiles/A:0-XQvaJk
dtlogin: -auth /var/dt/A:0-UgaaXa

Это то, что нам нужно сделать, найти и использовать необработанный файл диспетчера отображения MIT -MAGIC -COOKIE.

По выходу

$ systemctl status sddm

мы найдем что-то вроде

CGroup: /system.slice/sddm.service
        |-650 /usr/bin/sddm
        `-660 /usr/lib/Xorg -nolisten tcp -auth /var/run/sddm/{$somelongstring} -background none -noreset -displayfd 17 -seat seat0 vt1

Просто загрузите x11vnc вышеупомянутый файл cookie,

# x11vnc --display $DISPLAY -auth /var/run/sddm/{$somelongstring}

Обратите внимание, что такую ​​операцию необходимо выполнять от имени пользователя root.

Теперь на вашем компьютере будет запущен VNC-сервер X11, и вы сможете разблокировать экран приветствия с помощью VNC-подключения через любое устройство, которым может быть и ваш смартфон.

Возможно, кто-то может предложить более простое и/или более легкое решение, при котором соединения SSH и VNC не нужны, а достаточно командной строки. Однако этот подход довольно быстрый и должен решить вашу проблему.

Для различных диспетчеров служб, диспетчеров рабочих столов и серверов VNC приведенные здесь команды должны быть соответствующим образом адаптированы.

ОБНОВЛЕНИЕ:

Вчера я почему-то думал над этим вопросом и наткнулся на другой подход, который может сработать.

Идея в основном состоит в том, чтобы отказаться от диспетчеров рабочего стола/входа в систему вместо аутентификации с их помощью и удаленного запуска X самостоятельно.

Допустим, на вашем компьютере включена служба SSH-сервера. С удаленной машины (ваш телефон ), остановите диспетчер рабочего стола (SDDM, например):

# systemctl stop sddm

Теперь давайте предположим, что у вас установлен какой-то другой пакет инициализации X, например xinit , где будет достаточно такой команды, как startx. Если вы работали с консоли,

$ startx

без проблем запустит X в соответствии с вашими конфигурационными файлами.Я не знаю о каждой Unix -подобной системе, но, по моему опыту, startxбудет заботиться о $HOME/.xinitrcили, если файл не существует, /etc/X11/xinitrc, и X-сервер запустится, как и ожидалось.

К сожалению, мы не в консоли, и при попытке запуска из другой оболочки, такой как эмулятор терминала, где мы отправляем команды через SSH, просто отправляем

$ startx

извлекает

/usr/lib/Xorg.wrap: Only console users are allowed to run the X server

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

# startx

инициализирует X-сервер, как и ожидалось, следуя конфигурационным файлам rootиз дома (или /etc/X11/xinitrc, как упоминалось выше ). Это заставляет нас думать, что речь идет о разрешениях, а не о невозможности сделать это.

После пары минут поиска я наткнулся на Ошибка при попытке использовать Xorg :Только пользователям консоли разрешено запускать X-сервер? , Вход в систему SSH показывает Только пользователям консоли разрешено запускать X-сервер , оба из которых сводятся к одному и тому же пути, редактируйте (или добавляйте и редактируйте, если он не существует )/etc/X11/Xwrapper.config, чтобы включить следующие строки

allowed_users=anybody
needs_root_rights=yes

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

Примечание:

Убедитесь, что ваш файл Xresourcesзагружается соответствующим образом. Не забудьте правильно добавить в xinitrcокружение рабочего стола, оконный менеджер, команду xrdbи т. д.

Актуально:

Я также рассматриваю другой подход, вдохновленный Как удаленно войти в систему с полным графическим рабочим столом через X11 , но нужно подумать об этом немного подробнее. Это может послужить источником вдохновения для дальнейших решений и, возможно, лучшего или более подходящего варианта.

0
28.01.2020, 03:06

Я сделал этот скрипт несколько недель назад, и он работает очень хорошо, поэтому я размещаю его здесь для других. Он использует метод, введенный в -sf -d выше. Это не то же самое, что мой первоначальный запрос, который заключался в том, чтобы иметь возможность войти в систему через ssh и набрать пару букв, но у него есть дополнительное преимущество в виде возможности удаленного просмотра и управления компьютером.

#!/bin/bash
TMPVAR=`systemctl status sddm.service`
echo "TMPVAR = $TMPVAR"
TMPVAR2=$(echo $TMPVAR | cut -d '{' -f 2)
echo "TMPVAR2 = $TMPVAR2"
TMPVAR3=$(echo $TMPVAR2 | cut -d '}' -f 1)
echo "TMPVAR3 = $TMPVAR3"
TMPVAR4="/var/run/sddm/\{$TMPVAR3\}"
echo "TMPVAR4 = $TMPVAR4"
echo "starting VNC server with string: sudo x11vnc -auth $TMPVAR4 -
nopw -ncache 10"
x11vnc -auth $TMPVAR4 -nopw

Я вызываю этот скрипт при загрузке через systemd, создавая этот файл и активируя его

x11vnc.service

[Unit]
Description=starts x11vnc server with authorization to access sddm
After=sddm.service graphical.target
Wants=display-manager.service

[Service]
ExecStart=/home/daddy/Desktop/sddm_VNC.sh
Restart=always

[Install]
WantedBy=graphical.target

А потом, конечно,

sudo systemctl enable x11vnc.service
0
22.02.2020, 20:51

У меня есть очень простой ответ. :Включите автоматический вход в систему для SDDM, а затем создайте скрипт, вызывающий loginctlдля блокировки всех сеансов сразу после загрузки или через 10 секунд. Затем вы можете воспользоваться удобством loginctl, все еще находясь в заблокированном состоянии.

Другой способ — удаленно отредактировать конфигурацию SDDM, чтобы включить автоматический вход в систему. Вы можете либо вручную отредактировать ее с помощью ssh, затем перезапустить SDDM или перезагрузиться, либо создать сценарий, который при вызове заменяет файл конфигурации файлом автоматического входа в систему. псевдоним для него и запустить его легко. См. здесь для получения дополнительной информации.

0
23.10.2021, 16:53

Теги

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