1 votes

Comment ne pas exécuter /etc/profile.d/custom.sh lors de la connexion Secure FTP

Lorsque j'essaie de sécuriser le FTP (en utilisant WinSCP) vers ma boîte CentOS 6.4, je reçois un message qui indique :

Taille du paquet SFTP reçu trop importante (168438314 B). La taille maximale prise en charge est de 1024000 B.

Cette erreur est généralement causée par un message imprimé à partir du script de démarrage (comme profile). Le message peut commencer par ""\n\n**""

Impossible d'initialiser le protocole SFTP. Le serveur hébergeant un serveur SFTP est-il en cours d'exécution

Ceci semble être causé par mon script /etc/profile.d/custom.sh qui s'exécute lors de la connexion. Il est configuré pour afficher un message de bienvenue, ainsi qu'un résumé du système (Utilisation du CPU/Mémoire/Disque).

J'ai vraiment besoin que le script custom.sh s'exécute lors de la connexion sur la console locale OU lors de la connexion via SSH. Cependant, je ne veux pas qu'il s'exécute lors de la connexion Secure FTP (SFTP).

Existe-t-il un moyen de le configurer pour qu'il ne s'exécute pas lors de la connexion via Secure FTP ?

Ou sinon, si je ne peux pas l'empêcher de s'exécuter, existe-t-il un moyen de détecter qu'il est en cours d'exécution lors d'une connexion Secure FTP et de ne rien afficher. Donc, en pseudo code quelque chose comme :

Si connecté via Secure FTP alors ne rien afficher Sinon, si connecté via SSH ou Console locale afficher le message du jour (statistiques système).

Merci! Brad

MISE À JOUR - Il y a une documentation soutenant ce problème ici : http://winscp.net/eng/docs/requirements#remote_environment

La suggestion est de détecter si la session est interactive ou non. J'ai essayé de le faire en ajoutant ce qui suit en haut de mon custom.sh mais cela ne fonctionne toujours pas :

if [ -z $PS1 ]; then
### if [ -v PS1 ]   # Sur Bash 4.2+ ...
    # non-interactif
    return
fi

Ensuite, le reste de mon script s'exécute en affichant le message du jour.

SecureFTP devrait-il être détecté comme non interactif ou interactif ? Si c'est non-interactif, pourquoi le code ci-dessus ne sort-il pas du script lorsque j'essaie de me connecter via Secure FTP ?

3voto

Sidhi Ciang Points 151

Peut-être la méthode standard de vérification du fd '0 ?

if [ -t 0 ]; then
# faire quelque chose
fi

0 votes

J'ai ajouté un NON au début - donc en haut de mon code j'ai: if [ ! -t 0 ]; then return fi

0 votes

Oui, "PAS" fera l'affaire. Pas de soucis.

0voto

Greg Dubicki Points 1111

Utiliser /etc/profile.d pour un MOTD dynamique de facto nécessaire uniquement pour les connexions interactives via SSH/console générera de tels problèmes.

Alors que la solution de contournement dans la réponse de Danila Lander peut fonctionner, je suggère de faire les choses correctement et d'utiliser une solution appropriée pour cela.

Veuillez consulter les réponses à cette question pour des informations sur la façon de le faire correctement sur les serveurs Ubuntu et Centos 7.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X