1

bonjour,

qui pourrais me débloque je rame grave je débute en shell je dois faire un petit script j'ai du mal

je dois créer un scripte qui permette de comparer chaque jour 2 fichiers (c'est une fichier contenant l'existance d'imprimante ou l'ajout)

1er/ fichier " printers.conf "
2eme/ fichier "compare_printers"

je dois donc comparer ces 2 fichiers chaque jour
si pas de difference entre ces 2 fichiers alors c'est ok
si difference alors rajouter ceux qui manquent dans le fichier "compare_printers"

sachant que le fichier "compare_printers" est vide la 1er fois
(pour automatiser la tache je vais foutre ça dans une crontab mais le scripte je n'arrive à le créer)


comment faire aider moi merci


#!bin/ksh

#variables
printer=/etc/printers.conf #fichier existant contenant des noms d'imprimantes
diff=/etc/compare_printers #fichier créer qu'on nourrie chaque jour

2

man diff
Tu auras aussi sans doute besoin de sort, grep, et cut ou sed, au choix.

Note : tu parles pas du tout du contenu de tes fichiers : ils contiennent une ligne par imprimante, ou c'est des définitions par blocs, ou bien est-ce qu'ils ont aussi des lignes qui parlent d'autre chose, etc. En gros, un exemple de fichier serait le bienvenu smile
avatar
Il n'a pas de mots
Décrire son mépris
Perdre les rênes
Il a perdu la foi

3

et si tu pouvais aussi poster ce que tu as déjà fait, histoire de ne pas avoir donner l'impression de chercher quelqu'un pour faire l'exercice à ta place smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

#!/bin/bash
f1=printers.conf
f2=compare_printers
tmp=/tmp/tmp.$0.$$

(cat $f2 ; diff -u $f1 $f2 | tail -n -3 | grep '^-' | cut -f2 -d'-' ) > $tmp
mv -f $tmp $f2

5

man tact tongue
avatar
Il n'a pas de mots
Décrire son mépris
Perdre les rênes
Il a perdu la foi

6

No manual entry for tact

7

smile
avatar
Il n'a pas de mots
Décrire son mépris
Perdre les rênes
Il a perdu la foi

8

merci les mecs c'est cool, mais croyer moi je fais pas semblant de rien fairemais j'ai du mal à démarrer mon scripte je ne sais pas ou aller

voici un peu plus d'infos pour le scriptes contenus du fichier "printers.conf":

ImpSifacPsc:\
:bsdaddr=ua50d,ImpSifacPsc,Solaris:\
:description=imprimante SIFAC:

gigi50d:\
:bsdaddr=ua50d,gigi50d,Solaris:\
:description=test:

Voila en faite le fichier "printers.conf" contient des noms d'imprimante je dois donc comparez chaque jour ce fichier avec un le "compare_printers" 'qui est vide au départ)
si pas de différence entre les 2 imprimante ok
si nouvelle imprimante(c'est à dire différence) la rajouter dans le fichier "compare_printers".

Merci déjà pour votre aide géniale ce site.


9

10

" si nouvelle imprimante(c'est à dire différence) la rajouter dans le fichier "compare_printers". "

=> est-ce que ton système doit admettre des mises à jour d'imprimantes ?
Dans ce cas, la solution de PpHd n'est plus suffisante smile
avatar
Il n'a pas de mots
Décrire son mépris
Perdre les rênes
Il a perdu la foi

11

oui je dois rajouter dans le fichier des nouvelles imprimantes quand elles sont nouvelles

12

on se la refait : une imprimante qui change de nom, tu dois remplacer la ligne dans ton truc, ou juste ajouter la nouvelle configuration ?
avatar
Il n'a pas de mots
Décrire son mépris
Perdre les rênes
Il a perdu la foi

13

juste ajouter la nouvelle conf imprimante dans mon fichier de comparaison "compare_printers" si y'a nouvelle imprimante

14

ouais, donc la ligne de pphd, elle est cool smile
avatar
Il n'a pas de mots
Décrire son mépris
Perdre les rênes
Il a perdu la foi

15

merci les mecs c'est cool je vais tester

16

Merci Pphd
ça avance petit à petit le problème
les 2 fichiers sont comparés ça ajoute bien une nouvelle imprimante dans le nouveau fichier 'compare'
mais maintenant si une imprimante et supprimé dans le fichier d'origine 'printers.conf' ça ne supprime pas dans le fichier 'compare' qu'est ce que je dois rajouter dans la commande

Merci de m'aider


f1=/root/printers.conf
f2=/root/compare
tmp=/root/tmp
(cat $f2 ; diff -u $f1 $f2 | grep '^-' | cut -d'-' -f2 ) > $tmp
mv -f $tmp $f2

17

ben tu as pas dit qu'il fallait supprimer des imprimantes, juste ajouter smile

(note : utiliser tmp=/root/tmp c'pas judicieux comme nom de fichier... Trop banal. Un ${f2}.tmp aurait été mieux )

Perso, je serais d'avis de te laisser compléter le script de pphd, en partant de lui, et avec un peu d'astuce, tu trouveras tout seul. est-ce que déjà tu comprends ce qu'il fait ?
avatar
Il n'a pas de mots
Décrire son mépris
Perdre les rênes
Il a perdu la foi

18

cp printers.conf compare_printers
n'est-il pas suffisant.


19

clair grin
avatar
Il n'a pas de mots
Décrire son mépris
Perdre les rênes
Il a perdu la foi

20


f1=/root/printers.conf
f2=/root/compare
tmp=/root/tmp
(cat $f2 ; diff -u $f1 $f2 | grep '^-' | cut -d'-' -f2 ) > $tmp
mv -f $tmp $f2
################################################################"
le scripte marche plus ou moins c'est cool j'avance petit à petit , autre question

1er question:
comment je fais pour remonter que les noms car là, je remonte tout :

ImpSifacPsc:\ (je veux récuperer que le nom de l'imprimante et pas le reste)

:bsdaddr=ua50d,ImpSifacPsc,Solaris:\
:description=imprimante SIFAC:

2ème question:
le scripte fait la difference entre 2 fichiers quand je supprime une imprimante le fichier crée à toujours l'ancienne imprimante comment faire.

3ème question:
je dois récuperer dans /etc/hosts l'ip de toute les imprimantes récuperer dans le fichier "compare"

exemple de /etc/host:
10.140.80.6 PNC4 PNC4Psc # HP Laserjet 5

4ème question:
ensuite je dois faire un ping sur ces adresse afin de voir celle qui sont branché ou eteinte
pour cette partie j'ai mon idée

je vais faire une boucle if après le ping si code retour =0 alors 0==>online alors indiquer la date du jour.
si code retour =1 alors 1==>offline


Aider moi please d'ailleurs pour mon tp cette exercice je l'ai appelé yaronet.sh (car j'avance grace à la communauté)

21

on va pas non plus te torcher tes devoirs quand même...

avatar
Il n'a pas de mots
Décrire son mépris
Perdre les rênes
Il a perdu la foi

22

f1=/root/printers.conf
f2=/root/compare
tmp=/root/tmp
(cat $f2 ; diff -u $f1 $f2 | grep '^-' | cut -d'-' -f2 ) > $tmp
mv -f $tmp $f2
################################################################"
le scripte marche plus ou moins c'est cool j'avance petit à petit , autre question

1er question:
comment je fais pour remonter que les noms car là, je remonte tout :

ImpSifacPsc:\ (je veux récuperer que le nom de l'imprimante et pas le reste)

:bsdaddr=ua50d,ImpSifacPsc,Solaris:\
:description=imprimante SIFAC:

2ème question:
le scripte fait la difference entre 2 fichiers quand je supprime une imprimante le fichier crée à toujours l'ancienne imprimante comment faire.

3ème question:
je dois récuperer dans /etc/hosts l'ip de toute les imprimantes récuperer dans le fichier "compare"

exemple de /etc/host:
10.140.80.6 PNC4 PNC4Psc # HP Laserjet 5

aider moi jusqu'a ce niveau car je suis bloqué

23

bonsoir ,
j'ai fais une récupération par awk:


#!/bin/sh

f1=/etc/printers.conf140208
f2=/etc/printers.suivi
tmp=/tmp/tmp_printers

(cat $f1 |awk -F":" '{print $1}' $f1) > $tmp
mv -f $tmp $f2

je recupère maintenant que le nom des imprimantes,

dans mon fichier $f2
j'ai le nom des imprimantes : PNC4 PNC4Psc


j'ai un autre problème comment je fais pour récupérer
l'ip des l'imprimante dans le /etc/hosts avec mon fichier de récupération $f2

exemple de /etc/host:
10.140.80.6 PNC4 PNC4Psc





24

nslookup $NOMDELIMPRIMANTE
/etc/hosts sert à ça.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

25

je comprends pas ce que tu veux dire

26

je veux récupérer l'ip pour faire un ping par la suite pour la suite de mon scripte comment je fais aider moi

Merci

27

ericsonne (./25) :
je comprends pas ce que tu veux dire

nslookup et le nom de l'imprimante, ça fait un lookup DNS, et le premier lookup que ça fait, c'est dans /etc/hosts.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

28

en faite avec la commande awk

#!/bin/sh

f1=/etc/printers.conf140208
f2=/etc/printers.suivi
tmp=/tmp/tmp_printers

(cat $f1 |awk -F":" '{print $1}' $f1) > $tmp
mv -f $tmp $f2

je récupère que le 1er paramètre c'est à dire le nom des imprimantes par exemple "PNC4 PNC4Psc "
je dois aller après chercher dans le /etc/hosts l'ip des imprimantes qui correspondant aux noms que j'ai récupérer pour vérifier si elles sont allumer par un ping.

mais comment faire pour remonter l'ip et faire correspondre avec le noms que je récupère

exemple dans /etc/host : 10.140.80.6 PNC4 PNC4P sc sdfsdfsdfsfs
10.147.90.6 PNggggggvgfgf sdfgsdgfsd





29

grep $MonNom /etc/hosts | awk ' { print $1 } '
?

30

si je comprend bien ta commande tu grep sur variable MonNom dans /etc/hosts pour prendre la 1er variable (ip) ==>ok

comment tu mets en relation mon 1er scripte qui prend les noms des imprimante pour mettre ça dans un fichier $f2

et ton scripte pour récuperer l'ip des imprimantes dans /etc/hosts