comment exécuter automatiquement un script sur le serveur peu de temps après que le système client établisse une connexion SSH avec le serveur
par exemple, supposons qu'un utilisateur se connecte à mon ordinateur à partir d'un autre système (connecté via LAN) à l'aide de la connexion SSH. À ce moment, un script (python ou shell) doit être exécuté automatiquement sur mon système pour effectuer une validation?
Comment exécuter le script automatiquement sur le système serveur?
Vous pouvez le faire en ajoutant le paramètre suivant à votre fichier de configuration (/ etc/ssh/sshd_config).
ForceCommand Forces the execution of the command specified by ForceCommand, ignoring any command supplied by the client and ~/.ssh/rc if present. The command is invoked by using the user's login Shell with the -c option. This applies to Shell, command, or subsystem execution. It is most useful inside a Match block. The command originally supplied by the client is available in the SSH_ORIGINAL_COMMAND environment variable. Specifying a command of “internal-sftp” will force the use of an in-process sftp server that requires no support files when used with ChrootDirectory.
Une autre option consiste à utiliser les fichiers .ssh/rc par utilisateur.
Pour utiliser la méthode ForceCommand, ajoutez simplement ForceCommand /usr/bin/ownscript
au bas du fichier /etc/ssh/sshd_config
(sur le serveur).
Le script ressemble à ceci:
#!/bin/bash
#Script file for ssh
#
#put your commands here
echo "test" > /tmp/test.txt
#
#exit by calling a Shell to open for the ssh session
/bin/bash
N'oubliez pas de chmod le script Sudo chmod +x /usr/bin/ownscript
Pour l'exécution d'un script lors de la connexion, ajoutez-le en tant qu'appel depuis le script/etc/profile. Ceci est exécuté pour chaque connexion, pas seulement pour les connexions ssh.