Bash назначил вывод / ошибку переменной

Я решил проблему, похоже, это связано как шмелю, так и драйверу Nvidia. См. Также этот выпуск Bumblebee.

Когда Bumblebee хочет выключить карту Nvidia, он попытается запустить rmmod nvidia . Но когда я запускаю эту команду, Arch сообщает, что не может выгрузить этот модуль, потому что он используется nvidia_modeset . По-видимому, этот новый модуль был недавно добавлен в драйвер Nvidia и заставляет Bumblebee блокировать систему при запуске startx (потому что он не может выключить карту Nvidia).

В настоящее время решения нет, но когда выйдет Bumblebee 4.0, оно, вероятно, будет.

5
28.01.2017, 23:24
3 ответа

Перенаправить стандартную ошибку ssh в файл в рамках подстановки команды, а затем проверить, является ли файл пустым или нет:

output="$( ssh server 'command' 2>ssh.err )"

if [[ -s ssh.err ]]; then
    echo 'SSH error:' >&2
    cat ssh.err >&2
fi

rm -f ssh.err

, который отображает ошибку SSH: следует записанными сообщениями об ошибках из ssh .

3
27.01.2020, 20:36

Из справочной страницы ssh в Ubuntu 16.04 (LTS):

EXIT STATUS
     ssh exits with the exit status of the remote command or with 255 if an error occurred.

Зная это, мы можем проверить статус выхода команды ssh . Если статус выхода был 225 , мы знаем, что это ошибка ssh , а если это любое другое ненулевое значение - это ошибка ls .

#!/bin/bash

TEST=$(ssh $USER@localhost 'ls /proc' 2>&1)

if [ $? -eq 0 ];
then
    printf "%s\n" "SSH command successful"
elif [ $? -eq 225   ]
    printf "%s\n%s" "SSH failed with following error:" "$TEST"
else 
    printf "%s\n%s" "ls command failed" "$TEST"
fi
9
27.01.2020, 20:36

Насколько я помню, должен работать какой-то вариант. Попробуйте это:

cmd 2>>>$errmsg

возможно тройная переадресация... Это было много лет назад... в переменной errmsg должно быть выведено сообщение об ошибке. Может быть, я ошибаюсь. В этом случае этот вариант получит сообщение со 100% гарантией:

errmsg=`cmd 2>/dev/null`

Этот вариант подавляет сообщение об ошибке, если оно необходимо или может быть не нужно. Но и обычный вывод его лови. Таким образом, вы можете различить эти два случая с помощью $? значение и исправить ваш сценарий.

0
08.05.2020, 22:58

Теги

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