2012-01-18 2 views
2

У меня возникла проблема с пересылкой SSH X-11, в то время как я использовал sudo. Я нашел решение для этого.Написание сценария bash для пересылки X-11

$hostname 
server4.a.b.edu 

Сначала я:

$ echo $DISPLAY 
localhost:10.0 

затем

$ xauth list 
server1.a.b.edu/unix:12 MIT-MAGIC-COOKIE-1 6026864294a0e081ac452e8740bcd0fe 
server4.a.b.edu/unix:10 MIT-MAGIC-COOKIE-1 f01fbfe0c0d68e30b45afe3829b27e58 

Тогда мне нужно сделать

$ sudo xauth add server4.a.b.edu/unix:10 MIT-MAGIC-COOKIE-1 f01fbfe0c0d68e30b45afe3829b27e58 

для Судо работать, для печенья с моим именем сервера и дисплей.

Как написать скрипт bash для автоматизации этого?

ответ

1

Вам вообще не нужен скрипт; это всего лишь одна команда.

sudo xauth add `xauth list $DISPLAY` 
+0

Я получаю сообщение об ошибке: xauth: (argv): 1: bad "add" command line – Bruce

+0

делает 'xauth list $ DISPLAY' дает вам только 1 строку для вашего дисплея? Мне интересно, есть ли у вас разные версии, чем у меня. –

+0

ничего не показывает ... – Bruce

1

я

sudo su otheruser -c "xauth add $(xauth list :${DISPLAY##*:}); xterm" 

Заменить Xterm с помощью команды GUI вы хотите запустить

2

Одна вещь, которая работала на RHEL6 экспортировал переменную XAUTHORITY перед sudoing, например:

export XAUTHORITY=~/.Xauthority 
sudo xclock 
0

Я использую это после того, как я вошел в систему с помощью ssh:

echo -n "xauth add `xauth list :${DISPLAY#*:}`" | sudo su - otheruser 
sudo su - otheruser 
echo -n "xauth remove :${DISPLAY#*:}" | sudo su - otheruser 

В основном он удаляет часть имени хоста на дисплее. xauth все еще находит, когда используется так.

Он работает, даже если у вас нет прав sudo для любой другой команды, кроме «su - otheruser». Затем он также удаляет добавленный файл cookie для повышения безопасности и чистоты. :)

Вы можете заменить команду sudo su - otheruser посередине любым вариантом команды sudo.

Смежные вопросы