Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/11/2014, à 12:27

maximeozenne

Recuperer une sous chaine automatiquement

Bonjour à tous !

Je suis en DUT informatique, et les pc etant connectés en réseau local, des petits malins s'amusent à se connecter via ssh pour nous faire une bomb fork.

Je cherche donc à creer un systeme pour me defendre.

Tout le systeme marche, mais j'ai besoin d'une chose; recuperer l'identifiant automatiquement quand quelqu'un se connecte.

En gros, j'ai fais une boucle infini qui fait la commande "who" et l'enregistre dans un fichier. ( who > connected )
Ensuite j'utilise la commande sed -s pour supprimer les lignes contenant mon profil du fichier connected
Enfin, je test si le fichier est vide. Si il est vide, alors rien ne se passe, la boucle continu, si quelqu'un est connecté, j'en suis notifié via zenity.

Maintenant, j'aimerais recuperer le numero de poste de celui qui est connecté sur ma machine. En gros, faire ça :

la commande who couplé à la commande sed -s me renvoi un fichier contenant ça si quelqu'un est connecté :

wj134463 pts/0        2014-11-21 10:51 (di-722-02.iut.univ-lehavre.fr)

- wj134463 est le nom de l'utilisateur.
- Je ne sais pas ce que represente pts/0, mais ici cela m'apporte peu.
- Ensuite il y a la date, et l'heure.
- Enfin, entre parenthèse, on peut voir "di-722-02" ceci est le nom de son poste, et c'est la chaine de caractère que j'aimerais récuperer !

Etant donné le fait que la date est variable, je ne peux pas dire " recuperer du caractere numero 31 a 40 " car si on est le matin la date a 4 caractere et si on est l'apres midi la date en a 5 !

Du coup je pensais tester la chaine caractère par caractère, et lorsque le caractère correspond à " ( ", récupérer les 9 caractère suivant dans une variable.
Malheureusement je ne sais absolument pas comment faire ! Comment puis-je tester, caractère par caractère, si le caractère testé est une parenthèse ouvrante " ( " ?

Merci d'avance de votre attention,
Cordialement

Hors ligne

#2 Le 21/11/2014, à 12:58

Tomzz

Re : Recuperer une sous chaine automatiquement

Bonjour,
Essaie ça peut-être (attention je n'ai pas testé)

cat monfichier.log | cut -d( -f2 | cut -d\. -f1

Il y a suremant mieux avec sed ou awk

Hors ligne

#3 Le 21/11/2014, à 13:06

Tomzz

Re : Recuperer une sous chaine automatiquement

Bonjour,
Essaie ça peut-être (attention je n'ai pas testé)

cat monfichier.log | head -1 | cut -d( -f2 | cut -d\. -f1

Il y a surement mieux avec sed ou awk
Pour le head -1, il est peut être inutile ou a remplacer par tail

Hors ligne

#4 Le 21/11/2014, à 13:13

pires57

Re : Recuperer une sous chaine automatiquement

Ce n'est pas à toi de protéger ta machine mais a l'admin système de ton établissement de le faire.
La solution est simple, tu le contactes et lui demandes de restreindre les accés SSH


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#5 Le 21/11/2014, à 21:37

maximeozenne

Re : Recuperer une sous chaine automatiquement

Bonsoir et merci de vos réponses rapides !

Tout d'abord, pires57, étant en DUT informatique, on apprend justement toute l'architecture réseau, les commandes ainsi que l'utilisation de Linux en profondeur, et donc on doit apprendre à utiliser un ssh ! ( Qui est d'ailleurs très pratique pour, par exemple, récupérer des fichiers à partir de chez moi )

Tomzz je n'ai pas eu le temps d'essayer ta commande mais tu as raison je n'avais pas pensé à ta commande !

Sinon, j'ai réussi à régler mon problème. J'ai simplement utilisé ces commandes :

TEST : variable contenant la ligne à traiter ( ici = wj134463 pts/0        2014-11-21 10:51 (di-722-02.iut.univ-lehavre.fr)  )

var1=${TEST#*(} #Cette commande permet de récupérer toute la chaine de caractère APRES le "(". Soit : di-722-02.iut.univ-lehavre.fr)
var2=${TEST%.*} #Celle ci récupère la chaine de caractère AVANT le "." Soit : di-722-02

Grace à ça je peux récupérer le nom de poste via lequel la personne se connecte. J'ai ensuite configurer une connexion ssh automatique via clé publique qui va directement forker
la personne se connectant sur mon poste. Je rencontre encore des petits problèmes ( Entre autre l'envoi de la commande de fork, car un script qui utilise un ssh va s'executer jusqu'a
l'ouverture du ssh, puis pour continuer de s'executer il va d'abord attendre que le processus ssh se termine. Je cherche donc un moyen d'envoyer la commande via ssh en même temps que la connexion ) et également des problèmes de lenteur au niveau de la connexion automatique. Je travaille donc dessus !

En tout cas merci pour vos réponses ! Bonne soirée à vous !

Hors ligne

#6 Le 21/11/2014, à 22:09

pingouinux

Re : Recuperer une sous chaine automatiquement

Bonsoir,

maximeozenne #4 a écrit :

var1=${TEST#*(} #Cette commande permet de récupérer toute la chaine de caractère APRES le "(". Soit : di-722-02.iut.univ-lehavre.fr)
var2=${TEST%.*} #Celle ci récupère la chaine de caractère AVANT le "." Soit : di-722-02

Avec cette méthode, il faut que tu fasses ceci :

TEST="wj134463 pts/0        2014-11-21 10:51 (di-722-02.iut.univ-lehavre.fr)"
var1=${TEST#*\(}
var2=${var1%%.*}
echo "$var2"

Ou alors

var2=$(grep -Po '(?<=\()[^.]+' <<<"$TEST")
echo "$var2"

Hors ligne

#7 Le 21/11/2014, à 23:04

maximeozenne

Re : Recuperer une sous chaine automatiquement

Bonsoir !

Oui tu as raison de me rectifier, je l'avais écris de tete mais dans mon script cela marchait bien !

Hors ligne

#8 Le 22/11/2014, à 01:34

pires57

Re : Recuperer une sous chaine automatiquement

Laisse moi rire, tu n'apprends même pas un dixième de tout ce qui composent un réseau et de tout ce que comporte linux .
Un reseau c'est pas 2 switch un serveur et 3pc, il y a de la téléphonie,  de la visioconf, des vlan, des vpn , des firewall... il y a un nombre important d'équipements que tu ne peut pas voir en cours.
Et un admin système qui laisse les droits admin aux utilisateurs .... voilà quoi.


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#9 Le 22/11/2014, à 11:15

maximeozenne

Re : Recuperer une sous chaine automatiquement

Je sais bien que je n'apprend pas tout, ne te sens pas obligé de dénigrer mes études et me prendre de haut dès la première erreur d'expression que je fais.
On est sensé apprendre ce qu'est un réseau sous linux, ou du moins en voir les bases. Et dans les bases il y a la protection contre les connexions en ssh voilà tout. C'est pourquoi avant d'apprendre à s'en défendre on apprend à s'en servir.
Et nous n'avons pas les droits admin, renseigne toi avant de dire n'importe quoi.

Hors ligne

#10 Le 22/11/2014, à 11:45

pires57

Re : Recuperer une sous chaine automatiquement

La protection du SSH  se fait directement dans sa configuration.  N'importe qui ne doit pas avoir le droit de se connecter. Pour empêcher le bruteforce ssh il suffit d'installer et configurer des jails avec fail2ban.


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#11 Le 22/11/2014, à 12:14

maximeozenne

Re : Recuperer une sous chaine automatiquement

Je n'ai, à mon grand regret, aucun droit d'installer de logiciel ou de package sur ma session. On a besoin des droits roots pour cela. Après fail2ban est peut être installé de base ? On est sous debian à l'iut mais je ne saurais te dire quelle version. Le problème pour le moment c'est que je ne pense pas avoir le droit d'interdire le ssh sur mon poste étant donné qu'on est sensé apprendre à s'en servir... c'est pour ça que je voulais créer un script que je pouvais activer quand je voulais pour pouvoir me défendre en dehors des cours de réseau

Hors ligne

#12 Le 22/11/2014, à 12:24

pires57

Re : Recuperer une sous chaine automatiquement

Non il n'est pas installé par défaut. C'est probablement une debian 7.


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne