Да, корневой каталог текущего пользователя должен быть что переменная среды HOME
указывает. Существует, конечно, глобальный параметр настройки системы: запись в /etc/passwd
, или в более общем плане домашнее поле в пользовательской базе данных. Приложения, как предполагается, используют ту установку только для поиска пользователя кроме текущего пользователя, или если существуют приложения защиты (например, setuid программа). Иначе $HOME
должен иметь приоритет. Если это не делает, это - ошибка в приложении.
ответ cjm показывает, что Inkscape и другие приложения Gnome являются багги в этом отношении.
Можно сделать это с комбинацией BatchMode
опция и "парсинг" вывода. (ssh
всегда возвраты 255, если этому не удается соединиться по любой причине, таким образом, Вы не можете использовать код возврата для различения типы отказов.)
С BatchMode
на, никакая подсказка пароля или другое взаимодействие предпринят, таким образом, подключение, которое требует пароля, перестанет работать. (Я также поместил a ConnectTimeout
там, который должен быть скорректирован для установки потребностям. И выбранные действительно плохие имена файлов.)
#! /bin/bash
rm good no_auth other
while read ip host ; do
status=$(ssh -o BatchMode=yes -o ConnectTimeout=5 $ip echo ok 2>&1)
case $status in
ok) echo $ip $host >> good ;;
*"Permission denied"*) echo $ip $host $status >> no_auth ;;
*) echo $ip $host $status >> other ;;
esac
done < list.txt
Вы могли обнаружить другие типы ошибок (как пропавшие без вести открытого ключа сервера) при необходимости в более подробной классификации. Если Вам нужны результаты в единственном, отсортированном файле, просто cat
различные выходные файлы вместе, как Вы считаете целесообразным.
Ищите различные инструменты, которые автоматизируют рабочие команды на нескольких хостах через ssh. Например, с Mussh:
mussh -H hosts.txt -o ConnectTimeout=5 -P -d -c 'echo `hostname` is alive'
Массажируйте вывод по мере необходимости.
Примечание стороны: почему Вы храните IP-адреса в list.txt
? Имена серверов достаточно. Если имена, которые Вы хотите использовать, не являются именами DNS, использовать Host
директивы в ~/.ssh/config
.
servers that I can log in via ssh key
servers that prompts for password (of course password is unknown..)
ожидайте предоставит вход Вашим интерактивным командам. ssh клиент с флагом-v скажет Вам, какие подлинные методы сервер принимает. Если Вы добираетесь до интерактивной подсказки, заставьте ее выйти. Сделайте то, что Вы бледный, у Вас есть все, в чем Вы нуждаетесь.
servers that are unreachable
То же, одна команда для управления их всех, и в темноте, связывает их... Гул.
Команда mussh выводит только ошибки, поэтому вы можете просто запустить ее без отладки.
$ cat list.txt
10.1.2.93 trustme
10.1.2.92 wobudong
10.41.41.41 failhost
$ awk '{print $2}' list.txt | mussh -H - -t 10 -m -c hostname
trustme: trustme
failhost: ssh: Could not resolve hostname failhost: Name or service not known
wobudong: ssh: connect to host wobudong port 22: Connection timed out