espace dans les noms de fichiers

Remplacer les espaces par des _ dans les noms de fichier d’un dossier.

Sous Windows

cd mon_dossier
for /f "delims=" %%a in ('dir /b') do call :cmd "%%a"
exit
:cmd
set fichierbck=%~1
set fichier=%fichierbck: =_%
ren "%fichierbck%" "%fichier%"

Sous Linux

rename 's/[[:blank:]]/_/g' *

Remplacement temporaire

#IFS = field separator, so only accept end of line and not space as filename may contain space
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")

for v_fic in `find ${w_rep_purge}/ -type f -mtime ${w_jour_purge} -name "*.${w_extension}" | grep ${w_grep}`
 do
    echo " - Suppression du fichier [${v_fic}] ..."
#    rm -f ${v_fic}
    ls -la ${v_fic}
 done
#IFS = restore old filed separator to not changed stand shell comportement
IFS=$SAVEIFS

Traitement fichier (ligne vide, taille zéro …)

Supprimer retour chariot dans le fichier file1.txt et ecriture dans file2.txt

findstr /vir « ^$ » file1.txt > file2.txt

 

Recherche de \In dans file2.txt et ecriture dans file3.txt

findstr « \In »  file2.txt  > file3.txt

 

Fichier non vide

for %%I in (file3.txt ) do ( set size=%%~zI )
If %size% LEQ 0 goto fin_prg1

Format date (horodatage)

echo date_av : %date%

rem Permet de changer le format de date pour le current user
reg add « HKCU\Control Panel\International » /v sShortDate /d « dd-MM-yyyy » /f
echo date_ap : %date%
for /F « tokens=1-4 delims=- » %%a in (‘echo %date:~0,10%’) do set w_date=%%c%%b%%a
echo w_date : %w_date%

set horo=%w_date%_%w_time%
rem Horodatage d’un fichier log
set f_log=%d_log%\%horo%_%TOM_JOB%.log

On peut aussi changer temporairement le format de date.

rem save the existing format definition
for /f "skip=2 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v sShortDate') do set FORMAT=%%a
rem set ISO specific format definition
reg add "HKCU\Control Panel\International" /v sShortDate /t REG_SZ /f /d yyyy-MM-dd 1>nul:
rem query the date in the ISO specific format 
set ISODATE=%DATE%
rem restore previous format definition
reg add "HKCU\Control Panel\International" /v sShortDate /t REG_SZ /f /d %FORMAT% 1>nul:

 

 

Perf Counter Windows

11 Compteurs de performance Windows

Les compteurs de performance Windows peuvent être efficacement supervisés en utilisant perf_counter[].

Par exemple:

perf_counter["Processor(0)\Interrupts/sec"]

ou

perf_counter["Processor(0)\Interrupts/sec", 10]

Dans le but d’obtenir la liste complète des compteurs de performance disponibles pour la supervision vous pouvez exécuter la commande suivante:

typeperf -qx

Malheureusement, les paramètres locaux de nommage des compteurs de performances peuvent être différents sur les différents serveurs Windows. Ceci peut causer certains problèmes lors de la création d’un modèle pour superviser plusieurs machines Windows ayant différents paramètres locaux.

Chaque compteur de performance peut être traduit sous forme numérique, lequel est unique et exactement le même indifféremment de paramètres linguistiques.

Exécuter regedit, Ensuite trouver HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009. Les entrées de la base registre contiennent des informations telles que:

1
1847
2
System
4
Memory
6
% Processor Time
10
File Read Operations/sec
12
File Write Operations/sec
14
File Control Operations/sec
16
File Read Bytes/sec
18
File Write Bytes/sec
....

Donc, dans le but de traduire le nom (en chaîne de caractère) d’un compteur de performance sous une forme numérique,il faut trouver les nombres correspondant pour chaque partie du compteur de performance comme:

System -> 2
% Processor Time -> 6
\System\% Processor Time

Then use these numbers to create a numeric format:

\2\6

11.1 Paramètres utilisateurs simples

Dans le but de définir un nouveau paramètre pour la supervision, une ligne doit être ajoutée au fichier de configuration de Zabbix qui doit ensuite être redémarré. Par exemple:

   PerfCounter=UserPerfCounter1,"\Memory\Page Reads/sec",30
   ou
   PerfCounter=UserPerfCounter2,"\4\24",30

Ensuite, il est possible d’utiliser “UserPerfCounter1” et “UserPerfCounter2” comme des items habituels disponibles sur l’interface ou ailleurs, de façon similaire à UserParameter.

Redirection sortie

Pour rediriger le message d’erreur au port NUL, utilisez la commande suivante :

   dir file.xxx 2> nul

Ou bien, vous pouvez rediriger la sortie vers un seul endroit et les erreurs à l’autre.

   dir file.xxx > output.msg 2> output.err

Vous pouvez imprimer les erreurs et la sortie standard vers un fichier unique à l’aide de la commande « & 1 » pour rediriger la sortie de STDERR dans STDOUT et envoyer la sortie de STDOUT vers un fichier :

   dir file.xxx 1> output.msg 2>&1

Virus Gendarmerie Nationale

Ransomware_Stitur4

1) Le plus simple est de restauré à une date antérieure

J’ai réussi à restauré le PC de Sylvie P. (Windows XP).
Pour accéder au menu aide de Windows pour lancer la restauration, j’ai fait planté le PC lors de la fermeture.
J’ai lancer l’éditeur (Menu démarrer / exécuter /edit) en aveugle car je ne voyait pas la fenêtre de commande.
A la fermeture de Windows j’ai fait planté Windows en faisant Alt+Ctrl+Supp plusieurs fois, j’ai eu une fenêtre suite à erreur d’exécution (voulez-vous transmettre les info ou Annuler) et là j’ai pu accéder à l’aide de windows et lancer la restauration.

edit

sinon
2) Démarrage mode sans echec

Nettoyer les clés de registre (regedit)

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

et

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

et supprimer les fichiers concernés dans les dossiers.

Ajouter une durée à une date

@echo off
 set heuresupp=2
 set /a an_Now=%date:~6,4%
 set /a mois_Now=%date:~3,2%
 set /a Jour_Now=%date:~0,2%
 set /a hh_Now=%time:~0,2%
 set /a mn=%time:~3,2%
 
 set jour=%jour_Now%
 set an=%an_Now%
 set mois=%mois_Now%
 set moistmp=%mois_Now%
 
 :Calcul
 set /a heuretmp=%hh_Now%+%heuresupp%
 if %heuretmp% GEQ 24 (set /a heure=%heuretmp%-24) else (set /a heure=%heuretmp%)
 if %heuretmp% GEQ 24 (set /a jour=%jour_Now%+1) else (set /a jour=%jour_Now%)
 
 :calculmois
 if %mois_Now% EQU 1 set /a jourJ=%jour%-31
 if %mois_Now% EQU 2 goto bissextile
 if %mois_Now% EQU 3 set /a jourJ=%jour%-31
 if %mois_Now% EQU 4 set /a jourJ=%jour%-30
 if %mois_Now% EQU 5 set /a jourJ=%jour%-31
 if %mois_Now% EQU 6 set /a jourJ=%jour%-30
 if %mois_Now% EQU 7 set /a jourJ=%jour%-31
 if %mois_Now% EQU 8 set /a jourJ=%jour%-31
 if %mois_Now% EQU 9 set /a jourJ=%jour%-30
 if %mois_Now% EQU 10 set /a jourJ=%jour%-31
 if %mois_Now% EQU 11 set /a jourJ=%jour%-30
 if %mois_Now% EQU 12 set /a jourJ=%jour%-31
 goto CalculFinal
 
 :bissextile
 set /A tt=%an_Now% %% 4
 if not %tt%==0 goto SET28
 set /A tt=%an_Now% %% 100
 if not %tt%==0 goto SET29
 set /A tt=%an_Now% %% 400
 if %tt%==0 goto SET29
 :SET28
 if %mois_Now% EQU 2 set /a jourJ=%jour%-28
 goto CalculFinal
 
 :SET29
 if %mois_Now% EQU 2 set /a jourJ=%jour%-29
 
 :CalculFinal
 if %jourJ% GTR 0 set /a moistmp=%mois_Now%+1
 if %jourJ% GTR 0 set /a mois=%mois_Now%+1
 if %jourJ% LEQ 0 set jourJ=%jour%
 
 if %moistmp% GTR 12 set /a mois=%mois_Now%+1-12
 if %moistmp% GTR 12 set /a an=%an_Now%+1
 echo Base : %Jour_Now%/%mois_Now%/%an_Now% %hh_Now%:%mn%
 echo JourJ+2 : %jourJ%/%mois%/%an% %heure%:%mn%
 pause

Remplacement d’un caractère par un autre

Windows

Remplacement de a par b dans la variable P1

set p1=%p1:a=b%

Remplacement de  » par rien dans la variable P1

set p1=%p1:"=%

Remplacement de (espace) par _ dans la variable P1

set f_name=%1%
set f_nom=%f_name: =_%
echo fichier : %f_nom%

Suppression des espaces dans les noms de fichiers

@echo off
rem ------ Suppression des espaces dans les noms de fichiers

SETLOCAL ENABLEDELAYEDEXPANSION

set d_rep=G:\Contacts\processing\
set w_fic=*.xlsx

if EXIST %d_rep%%w_fic%. (
for /r "%d_rep%" %%i in ("%w_fic%") do (
	set wf_name="%%~fi"
	set ww_name=%%~ni%%~xi
	set wf_nom=!ww_name: =_!
	echo ren !wf_name! !wf_nom!
	ren !wf_name! !wf_nom!
	)
)

Linux

echo "bonjour" | sed 'sZbZBZ'
ou
echo "bonjour" | sed 's/b/B/'
Bonjour

exemple :
uptime | awk '{print $10}'
49.05,

uptime | awk '{print $10}' | sed 's/,//' | sed 's/\./,/'
49,05

FTP exemples

Linux <= Linux :

Job sur Arlequin récupère les fichiers de king

Pour une arborescence de fichiers

lftp king -d -u oracle,oralxxxxxx <<EOF
mirror -e --verbose=1 /dossier_source_local /dossier_cible_distant
mirror -e --verbose=1 /rmanbackup/sauve /oradata/rmanbackup/sauve
mirror -e --verbose=1 /rmanbackup/scripts /oradata/rmanbackup/scripts
mirror -e --verbose=1 /rmanbackup/ocr_backup /oradata/rmanbackup/ocr_backup
mirror -e --verbose=1 /rmanbackup/voting_disk_backup /oradata/rmanbackup/voting_disk_backup
bye
EOF

Autre méthode

#!/bin/bash -vx
w_path_file=/rmanbackup/octal
cd $w_path_file
echo "Déplace les fichiers de Legendre vers /rmanbackup/octal"
lftp ip_serveur -u user,password <<EOF
cd /"LEG vers FT"
dir *.csv
mget -E -a *.csv
bye
EOF

Linux => Windows

Job sur King envoie les fichiers sur PWFS3SPCPRD

le mirror -e efface les fichiers sur la cible lorsqu’ils n’existent plus à la source.

lftp user:password@serveur -e "mirror -e -R /dossier_source_local /dossier_cible_distant ; quit"
lftp fytransport\\adm_u1:jxxxxxx@PWFS3SPCPRD -e "mirror -e -R /rmanbackup/octal/ /Sauve_PING/ ; quit"

Windows <=> Linux

Job sur PWFS3SPCPRD récupère les fichiers de King

Il faut construire le fichier .ini

setlocal ENABLEDELAYEDEXPANSION

set fic_ini=C:\temp\FTP_king.ini

set nom_fic=/rmanbackup/dump/exp_erp_full_{dt_jour,AAAAMMJJ}.tar.gz
set destination=ftp\sauve_PING\export
ou
set nom_fic=%1
set destination=%2

echo Traitement du fichier : %nom_fic%

G:
cd %destination%
dir

echo open king>%fic_ini%
echo oracle>>%fic_ini%
echo oralxxxx>>%fic_ini%
echo ascii>>%fic_ini%
echo dir !nom_fic!>>%fic_ini%
echo mget !nom_fic!>>%fic_ini%
echo bye>>%fic_ini%

rem **************************************************************************
rem On execute le fichier %nom_fic%
rem **************************************************************************

ftp.exe -v -i -s:%fic_ini%

dir

Test IF … ELSE

Test ERRORLEVEL avec les enableDelayedExpansion

IF !ERRORLEVEL!==0 (
echo condition vrai
) ELSE ( — facultative
echo condition fausse — facultative
)
del /F /Q c:\test_proc.tmp
TIMEOUT /T 2 /NOBREAK
echo *******************************************
)

Lance l’exécution conditionnelle dans un programme de commandes.

IF [NOT] ERRORLEVEL nombre commande
IF [NOT] chaîne1==chaîne2 commande
IF [NOT] EXIST nom_de_fichier commande

NOT : Indique que Windows 2000 n’effectue la commande que si la condition est fausse.

ERRORLEVEL nombre : Condition vraie si le dernier programme exécuté a retourné un code sortie supérieur/égal au nombre donné.

commande : Spécifie la commande à exécuter si la condition est satisfaite.

chaîne1==chaîne2 : Condition vraie si les chaînes spécifiées sont identiques.

EXIST nom_de_fichier : Condition vraie si le nom de fichier donné existe.

 

commande : Spécifie la commande à exécuter si la condition est vérifiée. Commande peut être suivi de la commande ELSE qui exécutera la commande située après le mot-clé ELSE si la condition est fausse (FALSE)

La clause ELSE doit être sur la même ligne que la commande suivant IF.
Par exemple:

IF EXIST nomfichier. (
del nomfichier.
) ELSE (
echo nomfichier. introuvable.
)

L’exemple suivant NE marche PAS car la commande del doit être terminée par une nouvelle ligne.

IF EXIST nomfichier. del nomfichier. ELSE echo nomfichier. introuvable

L’exemple suivant NE marche PAS non plus, car la commande ELSE doit être sur la même ligne que la fin de la commande IF :

IF EXIST nomfichier. del nomfichier.
ELSE echo nomfichier. introuvable

Enfin, l’exemple suivant marche si vous l’écrivez sur une seule ligne :

IF EXIST nomfichier. (del nomfichier.) ELSE echo nomfichier. introuvable

Si les extensions de commandes sont activées, IF est modifié comme suit :
IF [/I] Chaîne1 op-de-comp Chaîne2 commande
IF CMDEXTVERSION nombre commande
IF DEFINED variable commande

op-de-comp peut être :

EQU – égal à
NEQ – différent de
LSS – inférieur à
LEQ – inférieur ou égal à
GTR – supérieur à
GEQ – supérieur ou égal à

et le commutateur /I, s’il est spécifié, demande d’ignorer la casse dans la comparaison des chaînes. Le commutateur /I peut également être utilisé pour la forme Chaîne1==Chaîne2 de IF. Ces comparaisons sont génériques : si les chaînes Chaîne1 et Chaîne2 sont toutes deux faites uniquement de chiffres, alors elles sont converties en nombres, et une comparaison numérique est alors effectuée.

La condition CMDEXTVERSION marche comme ERRORLEVEL, sauf qu’elle compare à un numéro de version interne associé aux extensions de commandes. La première version des extensions est 1. Ce numéro sera incrémenté de un à chaque amélioration significative. La condition CMDEXTVERSION n’est jamais vraie lorsque les extensions de commandes sont désactivées.

La condition DEFINED fonctionne comme EXISTS, sauf qu’elle prend un nom de variable d’environnement et renvoie vrai si la variable d’environnement est définie.

%ERRORLEVEL% sera une représentation sous forme de chaîne de la valeur en cours de ERRORLEVEL, pourvu qu’il n’existe pas déjà de variable d’environnement portant le nom ERRORLEVEL, auquel cas ce serait la valeur de cette dernière que vous obtiendriez. En utilisant cela et les comparateurs numériques ci-dessous, vous pouvez faire :

goto answer%ERRORLEVEL%

:answer0

echo Le programme a retourné le code 0

:answer1

echo Le programme a retourné le code 1

vous pouvez aussi faire, en utilisant les comparaisons numériques ci-dessus :

IF %ERRORLEVEL% LEQ 1 goto okay

%CMDCMDLINE% sera la ligne de commande originale passée à CMD.EXE avant tout traitement par CMD.EXE, pourvu qu’il n’existe pas déjà de variable d’environnement portant le nom CMDCMDLINE, auquel cas ce serait la valeur de cette dernière que vous obtiendriez.

%CMDEXTVERSION% sera une chaîne représentant la valeur actuelle de

CMDEXTVERSION, tant qu’il n’existe pas déjà de variable d’environnement appelée CMDEXTVERSION, dans quel cas vous obtiendrez sa valeur à la place.

Task : Processus windows

Afficher l’état d’un processus

tasklist /FI « imagename eq putty.exe »

Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
putty.exe 10080 RDP-Tcp#1 3 10076 K
putty.exe 2520 RDP-Tcp#3 4 9012 K
putty.exe 10072 RDP-Tcp#1 3 11400 K
putty.exe 9168 RDP-Tcp#3 4 8384 K
putty.exe 12776 RDP-Tcp#3 4 9152 K
putty.exe 14084 RDP-Tcp#3 4 9408 K
putty.exe 17864 RDP-Tcp#3 4 9368 K

Tuer les processus

TASKKILL /F /IM putty.exe /T

sleep, wait, timeout

Linux : sleep 60

Attend 60 secondes

time /T

ping 0.0.0.0 -w 1000 -n 60 > nul

time /T

-w en millisecondes (1000 = 1s)
-n nombre de ping (60 pour 60 secondes=1minute)
>nul pour ne rien afficher

TIMEOUT /Tdélai_d’attente /NOBREAK

Description :
Cet utilitaire accepte un paramètre de délai d’attente qui définit la période de temps d’attente (en secondes) ou jusqu’à ce qu’une frappe de touche se produise. Il accepte également un paramètre pour ignorer l’utilisation d’une touche.

Liste de paramètres :
/T délai_maximal Spécifie le nombre de secondes d’attente.
La plage valide est comprise entre -1 et 99999 secondes.

/NOBREAK Ignorer l’utilisation des touches et attendre le temps indiqué.

/? Affiche cet écran d’aide.

Remarque : une valeur de délai d’attente égale à -1 signifie qu’une frappe de touche est attendue.

Exemples :
TIMEOUT /?
TIMEOUT /T 10
TIMEOUT /T 300 /NOBREAK
TIMEOUT /T -1

TIMEOUT /T 300 /NOBREAK > nul