OVH Cloud OVH Cloud

Un super script promotionnel (et trollesque) Batch

44 réponses
Avatar
Do Re Mi chel La Si Do
Bonjour !

Je vous ai concocté le script ci-dessous, pour montrer l'incroyable
supériorité du Batch, sur tous les autres langages de script (y compris le
Verlan). Seul Python, AutoIt! et l'Occitan peuvent faire aussi bien.

J'attend, d'ailleurs, les réactions épidermiques, et, forcément partiales
(normal ; yakemoi qui suis, par hypothèse, impartial).

Bref, que fait ce script ? Hé bien, il verrouille un site, par son adresse
IP et un port. Dès que l'on veut s'y connecter, le process est tué (dans les
2 secondes).

Pour tester, j'ai mis l'adresse IP d'un de mes sites : http://ponx.org
Lancez le script dans une invite de commande ; lancez I.E. ; allez sur
http://ponx.org ; constatez.

@+

MCI

PS : le script est prévu pour Windows-XP-Pro en français.





Voilà le script :



@echo off
:: Supprime les process qui se connectent à une adresse IP

set IPDEL=213.186.47.206:80
:: pour tester : http://ponx.org

:SCAN
set PID=
netstat -ano |find "%IPDEL%" >TEMP.TXT
for /F "usebackq tokens=*" %%i in (TEMP.TXT) do (call :STO %%i)
if X%PID%X==XX goto :CONTINUE
call :TRAIT %PID%
:CONTINUE
sleepm 2000
goto :SCAN

:STO
set PID=%5
goto :EOF

:TRAIT
@taskkill /PID %1
goto :EOF

10 réponses

1 2 3 4 5
Avatar
~Jean-Marc~ [MVP]
Salutations *Do Re Mi chel La Si Do* !
Dans <news:
tu nous disais :

Bref, que fait ce script ? Hé bien, il verrouille un site, par son
adresse IP et un port. Dès que l'on veut s'y connecter, le process
est tué (dans les 2 secondes).


On peut le faire en VBS, mais ce serait plus long...

...j'attends l'arrivée d'un Monad'ien... ;)

@+

--
~Jean-Marc~ MSAE & MVP Windows XP Fr
M'écrire : http://msmvps.com/docxp/contact.aspx
- http://docxp.mvps.org - http://msmvps.com/docxp/ -
Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/

Avatar
Do Re Mi chel La Si Do
Re


On peut le faire ... ce serait plus long...




On peut le faire avec la plupart des langages (peut-être pas avec BrainFuck,
WhiteSpace, ou Piet). Ce sera presque toujours plus long, plus difficile à
mettre au point, plus gourmand en mémoire. Mais ce serait certainement avec
une interface plus jolie.

Ce script, c'était juste pour taquiner un peu les lecteurs.


@-salutations

Michel Claveau



Avatar
~Jean-Marc~ [MVP]
Salutations *Do Re Mi chel La Si Do* !
Dans <news:
tu nous disais :

Ce script, c'était juste pour taquiner un peu les lecteurs.


Non ? Je ne m'en doutais pas... ;-)

Quand même, je serais curieux de voir la même chose avec Monad...

@+

--
~Jean-Marc~ MSAE & MVP Windows XP Fr
M'écrire : http://msmvps.com/docxp/contact.aspx
- http://docxp.mvps.org - http://msmvps.com/docxp/ -
Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/

Avatar
Do Re Mi chel La Si Do
Re


Oui, c'est à voir. Je pense que, avec Monad, il va falloir commencer par
réapprovisionner le stock d'accolades. Et, AMHA, ce sera plus long qu'en
VBS...


@-salutations

Michel Claveau
Avatar
Do Re Mi chel La Si Do
Re-re-re !


Tiens, j'ai fait une version "semi"-Python. "Semi", car le script "wrappe"
des commandes DOS :

import os,time
while 1:
lig=os.popen('netstat -ano |find "213.186.47.206:80"').readlines()
if len(lig)>0:
pid=lig[0].split(' ')[-1].lstrip().rstrip('n')
vret=os.popen('taskkill /PID '+pid).read()
time.sleep(2)


A noter que :
- il doit être possible d'utiliser la même technique en VBS (mais ce
sera + long). D'ailleurs, si quelqu'un pouvait m'indiquer la commande VBS
qui permet d'appeler une commande DOS, et de récupérer l'affichage, merci à
lui.
- il existe, dans les librairies win32 de PyWin, les fonctions
nécessaires, mais, aussi, légèrement plus long.


@-salutations
--
Michel Claveau
Avatar
Fred
Dans : news:eveP9%,
Do Re Mi chel La Si Do disait :
Re-re-re !


Bonsoir Michel,

[...]

A noter que :
- il doit être possible d'utiliser la même technique en VBS (mais
ce sera + long). D'ailleurs, si quelqu'un pouvait m'indiquer la
commande VBS qui permet d'appeler une commande DOS, et de récupérer
l'affichage, merci à lui.


Regarde ici l'utilisation de stdOut avec la méthode Exec :
http://msdn.microsoft.com/library/en-us/script56/html/wslrfStdOutProperty.asp


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

Avatar
~Jean-Marc~ [MVP]
Salutations *Fred* !
Dans <news:%
tu nous disais :

Regarde ici l'utilisation de stdOut avec la méthode Exec :
http://msdn.microsoft.com/library/en-us/script56/html/wslrfStdOutProperty.asp


Exact.

Ca fonctionne bien. J'ai fait sur cette base un script VBS qui
me teste par ping le temps de réponse d'un serveur avec
récupération du temps de réponse et modération à la baisse
avec le ping précédent pour éviter les fausses alertes.

Tout ça avec un petit net send qui va bien en cas d'alarme...

:-)))

@+

--
~Jean-Marc~ MSAE & MVP Windows XP Fr
M'écrire : http://msmvps.com/docxp/contact.aspx
- http://docxp.mvps.org - http://msmvps.com/docxp/ -
Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/

Avatar
Fred
Dans : news:%,
~Jean-Marc~ [MVP] disait :


Tout ça avec un petit net send qui va bien en cas d'alarme...


Oh ? Même pas un petit mail avec une photo du serveur en PJ ? ;-)


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

Avatar
Jacques Barathon [MS]
"Do Re Mi chel La Si Do" wrote in message
news:
Re


Oui, c'est à voir. Je pense que, avec Monad, il va falloir commencer par
réapprovisionner le stock d'accolades. Et, AMHA, ce sera plus long qu'en
VBS...


Sympa comme jeu.

Tu vas être content, il y a plein d'accolades. Pour ce qui d'être plus long
qu'en VBS, pas sûr...

--- début script ---
$ipdel = "213.186.47.206:80"
for (;;) {
$net = $(netstat -ano)
foreach ($line in $net) {if ($line -match $ipdel) {$myline=$line}}
if ($myline) {
$proto,$localip,$remoteip,$status,$procid=$($myline.split()|foreach
{if ($_.length) {$_}})
if ($remoteip -eq $ipdel -and $procid) {(gps -id $procid).kill()}
}
start-sleep 20
}
--- fin script ---

On peut sans doute faire plus court. Je ne suis pas très fort en regexp mais
je crois que cette technique pourrait avantageusement remplacer mon split()
suivi du foreach visant à éliminer les espaces répétés. L'analyse du
résultat de netstat peut sans doute être optimisée également.

Qui le fait en VBS et en Python, qu'on puisse comparer?

Jacques

Avatar
Jacques Barathon [MS]
FYI - les deux lignes suivantes:

$proto,$localip,$remoteip,$status,$procid=$($myline.split()|foreach
{if ($_.length) {$_}})

sont en fait une seule et même ligne. Le retour à la ligne a été imposé
arbitrairement par le format brut (brutal? :-)) du newsgroup. Si vous voulez
tester ce script, reconstituez donc la ligne en collant les deux lignes bout
à bout, uniquement séparées par un espace.

Jacques

"Jacques Barathon [MS]" wrote in message
news:
"Do Re Mi chel La Si Do" wrote in
message news:
Re


Oui, c'est à voir. Je pense que, avec Monad, il va falloir commencer par
réapprovisionner le stock d'accolades. Et, AMHA, ce sera plus long qu'en
VBS...


Sympa comme jeu.

Tu vas être content, il y a plein d'accolades. Pour ce qui d'être plus
long qu'en VBS, pas sûr...

--- début script ---
$ipdel = "213.186.47.206:80"
for (;;) {
$net = $(netstat -ano)
foreach ($line in $net) {if ($line -match $ipdel) {$myline=$line}}
if ($myline) {
$proto,$localip,$remoteip,$status,$procid=$($myline.split()|foreach
{if ($_.length) {$_}})
if ($remoteip -eq $ipdel -and $procid) {(gps -id $procid).kill()}
}
start-sleep 20
}
--- fin script ---

On peut sans doute faire plus court. Je ne suis pas très fort en regexp
mais je crois que cette technique pourrait avantageusement remplacer mon
split() suivi du foreach visant à éliminer les espaces répétés. L'analyse
du résultat de netstat peut sans doute être optimisée également.

Qui le fait en VBS et en Python, qu'on puisse comparer?

Jacques




1 2 3 4 5