Когда я пытаюсь защитить FTP (с помощью WinSCP) в моем окне CentOS 6.4, мне предлагается сообщение, в котором говорится:
Received too large (168438314 B) SFTP packet. Max supported packet size is 1024000 B.
This error is typically caused by message printed from startup script (like profile). The message may start with ""\n\n**""
Cannot initialize SFTP protocol. Is the host running an SFTP server
Похоже, это вызвано моим сценарием /etc/profile.d/custom.sh, который запускается во время входа в систему. Его настройка для вывода приветственного сообщения, а также сводной информации о системе (использование ЦП / памяти / диска).
Мне действительно нужен сценарий custom.sh для запуска при входе в локальную консоль ИЛИ при входе через SSH. Однако я не хочу, чтобы он запускался при входе в Secure FTP (SFTP).
Есть ли способ настроить его так, чтобы он не запускался при входе через защищенный FTP?
Или, в качестве альтернативы, если я не могу остановить его запуск, есть ли способ определить, что он запускается во время безопасного входа в систему FTP и ничего не выводит. Итак, в псевдокоде что-то вроде:
Если вы вошли в систему через безопасный FTP, то ничего не выводите. Остальное, если вы вошли в систему через SSH или локальную консоль, выводите сообщение дня (системная статистика).
Спасибо! Брэд
ОБНОВЛЕНИЕ - здесь есть документация, подтверждающая эту проблему: http://winscp.net/eng/docs/requirements#remote_environment
Предлагается определить, является ли сеанс интерактивным или нет. Я попытался сделать это, добавив следующее в начало моего custom.sh, но он все еще не работает:
if [ -z $PS1 ]; then
### if [ -v PS1 ] # On Bash 4.2+ ...
# non-interactive
return
fi
Затем выполняется остальная часть моего скрипта, выводящая MOTD.
Следует ли определять SecureFTP как неинтерактивный или интерактивный? Если это не интерактивно, почему в приведенном выше коде нет сценария, когда я пытаюсь войти через защищенный FTP?
Может, стандартный метод проверки fd ’0 ′?
if [ -t 0 ]; then
# do stuff
fi
С помощью /etc/profile.d
де-факто динамический MOTD, необходимый только для интерактивного входа через SSH / консоль, вызовет такие проблемы.
Хотя обходной путь в Ответ Данилы Ландер может сработать, я предлагаю поступить правильно и использовать для этого подходящее решение.
Посмотри пожалуйста ответы на этот вопрос для получения информации о том, как это сделать правильно на серверах Ubuntu и Centos 7.