Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Aller à la page:  1 2 Page suivante
Page: 1 sur 2
Executer un fichier .bat
Envoyé par: chrystelle

Bonjour à tous!

J'aimerais savoir comment éxécuter un fichier .bat comme extension.

J'ai fais :

chmod a+x op_cert.bat

./op_cert.bat

mais il y a certaines commandes que linux de reconnait pas comme : REM

Comment faire pour passer outre?

Merci d'avance pour vos réponses.

Poste le Friday 22 August 2008 18:53:27
Répondre     Citer    
Re: Executer un fichier .bat

Les fichiers chauves-souris restent derrière la fenêtre !

Les fichiers batch se nomment scripts sous linux, doivent débuter par un shebang, et "lister" des commandes linux.

cf.
[[color=orange]Léa[/color]]
[[color=orange]Advanced Bash Scripting[/color]]

Poste le Friday 22 August 2008 19:10:33
Répondre     Citer    
Re: Executer un fichier .bat
Envoyé par: chrystelle

est ce que je dois changer l'extension de mon fichier?

Poste le Friday 22 August 2008 19:18:47
Répondre     Citer    
Re: Executer un fichier .bat
Envoyé par: diancech

Il faut que tu crées un script bash pour faire la même chose que ton .bat sous linux, ton .bat ne fonctionnera pas sous linux.

;-)

--------------------------------------------------------------------------------------------------------------------------------------------------
Exige beaucoup de toi-même et attends peu des autres. Ainsi beaucoup d'ennuis te seront épargnés. Confucius

Poste le Friday 22 August 2008 20:13:56
Répondre     Citer    
Re: Executer un fichier .bat

bonsoir Diancech,

heu... la bille de bois qui me sert de tête n'est pas d'accord.
bash non plus :
$ echo "echo "blabla"> test.bat
$ ./test.bat
blabla
$ sh test.bat
blabla
$ /home/nbah/test.bat
blabla 
...
?

Poste le Friday 22 August 2008 20:46:24
Répondre     Citer    
Re: Executer un fichier .bat
Envoyé par: diancech

Citation
nbah
heu... la bille de bois qui me sert de tête n'est pas d'accord.
bash non plus :

Certaines fonctions comme "echo" vont marcher (puisque la syntaxe est la même sous windows et linux), mais si son .bat comporte des fonctions un peu plus complexe comme des tests là le résultat ne sera pas le même.

De base son .bat est interprété comme un script bash, mais dés qu'il va rencontrer une fonction avec une syntaxe différente n'existant que sous windows il va planter (comme elle le rapporte pour la commande REM).

En même temps je peux me tromper je n'ai jamais essayer de lancer un .bat sous linux. :-))

--------------------------------------------------------------------------------------------------------------------------------------------------
Exige beaucoup de toi-même et attends peu des autres. Ainsi beaucoup d'ennuis te seront épargnés. Confucius

Poste le Saturday 23 August 2008 12:58:33
Répondre     Citer    
Re: Executer un fichier .bat

Oui, oui, bien sûr ! Tout à fait ! Dès que le shell rencontrera une commande inconnue, il évoquera une 'erreur: commande non trouvée'.

Je ne pensais pas éxécuter un *.bat tel quel. C'est pourquoi j'ai précisé :
Citation

et "lister" des commandes linux
(`echo` était un mauvais exemple, puisqu'il existe pour les deux systèmes). J'aurais dû ajouter uniquement.

Je pensais à l'extension...
?

Poste le Saturday 23 August 2008 13:34:14
Répondre     Citer    
Re: Executer un fichier .bat
Envoyé par: diancech

chrystelle poste le contenu de ton .bat (entre les balises code) on pourra t'aider pour faire un script qui fait la même chose sous linux. ;-)

--------------------------------------------------------------------------------------------------------------------------------------------------
Exige beaucoup de toi-même et attends peu des autres. Ainsi beaucoup d'ennuis te seront épargnés. Confucius

Poste le Saturday 23 August 2008 15:01:37
Répondre     Citer    
Re: Exécuter un fichier .bat
Envoyé par: nicola

Je ne sais plus où (sur ce forum je crois) j'ai vu un code qui s'exécutait avec plein de langages, dont le C et le Fortran. #%b

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Saturday 23 August 2008 19:45:09
Répondre     Citer    
Re: Executer un fichier .bat
Envoyé par: chrystelle

@echo off

REM

REM The information assigned to the environment variables below will be

REM included in the certificates generated by this script.

REM

REM The following environment variables should be assigned to valid

REM values. This script will not work with quotes in any of the

REM the following environment variables.

REM



REM ==============================================================================

REM EDIT THE FOLLOWING LINES, WHICH CURRENTLY HAVE SAMPLE DEFAULTS.

REM CHANGE THE VALUES AFTER THE '=' SYMBOL TO REFLECT YOUR SPECIFIC ENVIRONMENT.

REM ==============================================================================



REM Specify your country [two letters only]

set OP_CERT_COUNTRY=CA



REM Specify your state or province

set OP_CERT_STATE=QC



REM Specify your city

set OP_CERT_LOCALITY=Trois-Rivieres



REM Specify your company's name

set OP_CERT_ORG=UQTR



REM This is the expiration for the CA and public certificates created by the CA; often will be 10 years or more.

set OP_CERT_CA_DAYS=3650



REM This is the expiration for the Capture Manager certificates; might be 1 day, 30 days, etc., depending on policy.

set OP_CERT_CERT_DAYS=200



REM ==============================================================================

REM END OF LINES THAT YOU SHOULD EDIT.

REM ==============================================================================



if "%OP_CERT_COUNTRY%" == "" goto edit_script



if "%OP_CERT_STATE%" == "" goto edit_script



if "%OP_CERT_LOCALITY%" == "" goto edit_script



if "%OP_CERT_ORG%" == "" goto edit_script



if "%OP_CERT_CA_DAYS%" == "" goto edit_script



if "%OP_CERT_CERT_DAYS%" == "" goto edit_script



shift



if "%0" == "" goto help



if "%0" == "help" goto help



if "%0" == "dsaparam" goto dsaparam



if "%0" == "gencakey" goto gencakey



if "%0" == "genmanager" goto genmanager



echo op_cert: invalid command: %0



goto help



:edit_script

echo op_cert: please edit the environment variables at the start of this script file



goto end



:help

echo usage: op_cert command

echo.

echo commands:

echo dsaparam: generates DSA parameters

echo gencakey: generates the certificate authority's private and public keys

echo genmanager: generates the certificates used by the capture manager

echo help: displays this text

echo.

echo Certificate generation requires generating the DSA parameters first.

echo If the DSA parameter file (dsaparam.pem) already exists, there is no

echo need to generate a new DSA parameter file.



goto end



:dsaparam

openssl dsaparam -outform PEM -out dsaparam.pem 1024



goto end



:gencakey

ECHO.

ECHO ==============================================

ECHO Generating the private and public keys for the certificate authority. This operation only needs to be done once.

ECHO Enter the same passphrase three times. This passphrase should be kept secure.

ECHO ==============================================

ECHO.

echo [ req ] > openssl.cnf

echo default_bits = 1024 >> openssl.cnf

echo default_keyfile = privkey.pem >> openssl.cnf

echo distinguished_name = req_distinguished_name >> openssl.cnf

echo prompt = no >> openssl.cnf

echo [ req_distinguished_name ] >> openssl.cnf

echo C = %OP_CERT_COUNTRY% >> openssl.cnf

echo ST = %OP_CERT_STATE% >> openssl.cnf

echo L = %OP_CERT_LOCALITY% >> openssl.cnf

echo O = %OP_CERT_ORG% >> openssl.cnf

echo CN = CA >> openssl.cnf



openssl req -config openssl.cnf -newkey dsa:dsaparam.pem -sha1 -keyout cakey.pem -outform PEM -out careq.pem



openssl x509 -req -inform PEM -in careq.pem -sha1 -signkey cakey.pem -outform PEM -out ca.pem -days %OP_CERT_CA_DAYS%



copy ca.pem+cakey.pem casign.pem



del cakey.pem careq.pem



ECHO.

ECHO ==============================================

ECHO This certificate will expire in %OP_CERT_CA_DAYS% days.

ECHO ==============================================

ECHO.



goto end



:genmanager

ECHO.

ECHO ==============================================

ECHO Generating the capture manager certificate.

ECHO Enter the user's passphrase twice, followed by the certificate authority's passphrase.

ECHO The user's passphrase is what he will type into ITGuru when opening the capture manager.

ECHO ==============================================

ECHO.

echo [ req ] > openssl.cnf

echo default_bits = 1024 >> openssl.cnf

echo default_keyfile = privkey.pem >> openssl.cnf

echo distinguished_name = req_distinguished_name >> openssl.cnf

echo prompt = no >> openssl.cnf

echo [ req_distinguished_name ] >> openssl.cnf

echo C = %OP_CERT_COUNTRY% >> openssl.cnf

echo ST = %OP_CERT_STATE% >> openssl.cnf

echo L = %OP_CERT_LOCALITY% >> openssl.cnf

echo O = %OP_CERT_ORG% >> openssl.cnf

rem Note that CN ("Commmon Name") is chosed to be different to make sure the output cert.pem does not appear to be self-signed.

echo CN = manager certificate >> openssl.cnf



openssl req -config openssl.cnf -newkey dsa:dsaparam.pem -sha1 -keyout managerkey.pem -outform PEM -out managerreq.pem



openssl x509 -req -inform PEM -in managerreq.pem -sha1 -CA casign.pem -CAkey casign.pem -CAcreateserial -outform PEM -out managercert.pem -days %OP_CERT_CERT_DAYS%



copy managercert.pem+managerkey.pem+ca.pem cert.pem



del managerkey.pem managerreq.pem managercert.pem casign.srl openssl.cnf



ECHO.

ECHO ==============================================

ECHO This certificate will expire in %OP_CERT_CERT_DAYS% days.

ECHO ==============================================

ECHO.



goto end



:end

set OP_CERT_COUNTRY=

set OP_CERT_STATE=

set OP_CERT_LOCALITY=

set OP_CERT_ORG=

Poste le Sunday 24 August 2008 19:02:59
Répondre     Citer    
Re: Executer un fichier .bat
Envoyé par: nicola

Génial, merci d'avoir joué avec nous.

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Sunday 24 August 2008 19:59:37
Répondre     Citer    
Re: Executer un fichier .bat
Envoyé par: diancech

La prochaine fois tu pourrais cliquer sur le bouton "Code" dans les options de formatage de texte, et tu colles ton texte entre les deux. ];-)

Ce doit être possible de faire un script faisant la même chose, il ne fait rien de bien compliqué. Regarde les liens que nbah a donné afin de l'écrire et poses tes questions.

Cependant je ne voit pas trop l'interêt de s'embêter à faire un script pour faire ceci, si je comprends bien ce qu'il fait il génére un fichier openssl.cnf. Je pense que tu devrais plutôt regarder comment marche et se configure openssl sous linux avant de te lancer dans l'écriture d'un script équivalent.

;-)






--------------------------------------------------------------------------------------------------------------------------------------------------
Exige beaucoup de toi-même et attends peu des autres. Ainsi beaucoup d'ennuis te seront épargnés. Confucius

Poste le Sunday 24 August 2008 21:46:52
Répondre     Citer    
Re: Executer un fichier .bat
Envoyé par: chrystelle

salut,

Je sais deja comment fonctionne openssl. Ce fichier permet de faire de l'encryption ave le logiciel OPNET a partir d'OPENSSL. J'ai deja cree mes certificats ainsi que mes clefs privés avec openssl ... Juste que ce sript sera utiliser pour faire la mme chose mais avec le logiciel de simulation de réseau OPNET.


Poste le Monday 25 August 2008 03:22:54
Répondre     Citer    
Re: Executer un fichier .bat
Envoyé par: chrystelle

Salut!

Juste une question, je n'ai jamais écris de script sous linux et j'amerais savoir comment faire pour en crée un (les commandes a utiliser pour la création d'un script) et commencer a écrire mon texte???



Merci d'avance

Poste le Monday 25 August 2008 15:51:37
Répondre     Citer    
Re: Exécuter un fichier .bat
Envoyé par: nicola

Avec n'importe quel éditeur de texte (vim, emacs, joe, gedit, kate et tant d'autres).

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Monday 25 August 2008 18:01:44
Répondre     Citer    
Re: Exécuter un fichier .bat
Envoyé par: diancech

Commençe par regarder ça, je pense que c'est un bon début:

[www.lea-linux.org]

Ce site là je ne le connais pas, mais bon nbah a donné le lien , donc je pense qu'il doit être bien. ;-)

[abs.traduc.org]

Aprés pour faire un script c'est pas bien compliqué, comme le dit nicola, utilise n'importe quel éditeur de texte: par exemple :

kwrite tonscript.sh

Ensuite il faut que ton script commençe par la ligne suivante :

#!/bin/bash

Aprés pour les tests, les affectations de variables, et le dialogue utilisateur regarde dans les pages données ci-dessus.

Pour les lignes REM c'est des commentaires donc tu peux les faire commençer par #.

La commande echo est la même sous linux, et je pense que la commande openssl existe aussi.

:-)






--------------------------------------------------------------------------------------------------------------------------------------------------
Exige beaucoup de toi-même et attends peu des autres. Ainsi beaucoup d'ennuis te seront épargnés. Confucius

Poste le Monday 25 August 2008 20:28:41
Répondre     Citer    
Re: Exécuter un fichier .bat
Envoyé par: chrystelle

Salut!

je suis un peu confuse dans mon script au niveau des tests(if). Comment est ce que je peux les modifiés pour qu'ils puissent etre utilisables sous linux?

if "%OP_CERT_COUNTRY%" == "" goto edit_script

if "%OP_CERT_STATE%" == "" goto edit_script

if "%OP_CERT_LOCALITY%" == "" goto edit_script

if "%OP_CERT_ORG%" == "" goto edit_script

if "%OP_CERT_CA_DAYS%" == "" goto edit_script

if "%OP_CERT_CERT_DAYS%" == "" goto edit_script

shift

if "%0" == "" goto help

if "%0" == "help" goto help

if "%0" == "dsaparam" goto dsaparam

if "%0" == "gencakey" goto gencakey

if "%0" == "genmanager" goto genmanager

Aussi je ne comprends pas ce bout de code

goto end

:help
echo usage: op_cert command
echo.
echo commands:
echo dsaparam:  generates DSA parameters
echo     gencakey:  generates the certificate authority's private and public keys
echo   genmanager:  generates the certificates used by the capture manager
echo         help:  displays this text
echo.
echo Certificate generation requires generating the DSA parameters first.
echo If the DSA parameter file (dsaparam.pem) already exists, there is no
echo need to generate a new DSA parameter file.

goto end

:dsaparam
openssl dsaparam -outform PEM -out dsaparam.pem 1024

goto end

:gencakey
ECHO.
ECHO ===========================================
ECHO Generating the private and public keys for the certificate authority. This operation only needs to be done once.
ECHO Enter the same passphrase three times.This passphrase should be kept secure.
ECHO ==============================================
ECHO.
echo [ req ] > openssl.cnf
echo default_bits               = 1024 >> openssl.cnf
echo default_keyfile            = privkey.pem >> openssl.cnf
echo distinguished_name         = req_distinguished_name >> openssl.cnf
echo prompt                     = no >> openssl.cnf
echo [ req_distinguished_name ] >> openssl.cnf
echo C                          = %OP_CERT_COUNTRY% >> openssl.cnf
echo ST                         = %OP_CERT_STATE% >> openssl.cnf
echo L        

:end
set OP_CERT_COUNTRY=
set OP_CERT_STATE=
set OP_CERT_LOCALITY=
set OP_CERT_ORG=

Merci d'avance

Poste le Wednesday 27 August 2008 13:38:38
Répondre     Citer    
Re: Exécuter un fichier .bat
Envoyé par: diancech

if "%OP_CERT_COUNTRY%" == "" goto edit_script

if "%OP_CERT_STATE%" == "" goto edit_script

if "%OP_CERT_LOCALITY%" == "" goto edit_script

if "%OP_CERT_ORG%" == "" goto edit_script

if "%OP_CERT_CA_DAYS%" == "" goto edit_script

if "%OP_CERT_CERT_DAYS%" == "" goto edit_script


Pour ces tests il vérifie que tes variables d'environnement sont alimentés sont alimentées, et sinon il saute à la balise "edit_script" qui fait ça :

echo op_cert: please edit the environment variables at the start of this script file

En gros en bash ca va te donner (pas testé):

if [ "$OP_CERT_COUNTRY" == "" || "$OP_CERT_LOCALITY" == "" || "$OP_CERT_ORG" == "" || "$OP_CERT_CA_DAY" == "" || "$OP_CERT_CERT_DAYS" == "" ]; then
   echo please edit the environment variables at the start of this script file
   exit
fi

En gros c'est pour empêcher d'avoir des variables non alimentées, si tu veux mettre un message plus précis (par variable) tu peux faire un "case" aussi.

Pour ça :
if "%0" == "" goto help

if "%0" == "help" goto help

if "%0" == "dsaparam" goto dsaparam

if "%0" == "gencakey" goto gencakey

if "%0" == "genmanager" goto genmanager

C'est le test des options du script, dans bash il faudra que tu test $1 et pas $0, avec un case ou des if au choix.

A propos du reste du bout de code, pour :help c'est l'aide du script, :dsparam il te génére les clés, et :gencakey te crées un fichier openssl.cnf, en fait ce sont des étiquettes auxquelles se rend le script, par le goto, lors des tests des options du script.

En bash il ne faut pas utiliser le goto (je ne sais même pas si c'est supporté par bash:-))), soit tu déclares des fonctions pour les différentes parties du scripts cela fera plus clair soit tu fait tout à la suite.


--------------------------------------------------------------------------------------------------------------------------------------------------
Exige beaucoup de toi-même et attends peu des autres. Ainsi beaucoup d'ennuis te seront épargnés. Confucius

Poste le Wednesday 27 August 2008 20:09:05
Répondre     Citer    
Re: Exécuter un fichier .bat
Envoyé par: diancech

Voilà ce que ton script peux donner, j'ai toujours pas tester il peux y avoir des erreurs, il reste la fonction gencamanager à faire:

#!/bin/bash

OP_CERT_COUNTRY=CA

#Specify your state or province
OP_CERT_STATE=QC

#Specify your city
OP_CERT_LOCALITY=Trois-Rivieres

#Specify your company's name
OP_CERT_ORG=UQTR

#This is the expiration for the CA and public certificates created by the CA; often will be 10 years or more.
OP_CERT_CA_DAYS=3650

#This is the expiration for the Capture Manager certificates; might be 1 day, 30 days, etc., depending on policy.
OP_CERT_CERT_DAYS=200

#Test de l'alimentation des variables
if [ "$OP_CERT_COUNTRY" == "" || "$OP_CERT_LOCALITY" == "" || "$OP_CERT_ORG" == "" || "$OP_CERT_CA_DAY" == "" || "$OP_CERT_CERT_DAYS" == "" ]; then
   echo "please edit the environment variables at the start of this script file"
   exit
fi

# Test de l'option de ton script
case $1 in 
	help)
		echo "usage: op_cert command"
		echo "commands:"
		echo "dsaparam: generates DSA parameters"
		echo "gencakey: generates the certificate authority's private and public keys"
		echo "genmanager: generates the certificates used by the capture manager"
		echo "help: displays this text"
		echo "Certificate generation requires generating the DSA parameters first."
		echo "If the DSA parameter file (dsaparam.pem) already exists, there is no"
		echo "need to generate a new DSA parameter file."
	;;
	dsaparam)
		openssl dsaparam -outform PEM -out dsaparam.pem 1024 
	;;
	gencakey)
		echo "=============================================="
		echo "Generating the private and public keys for the certificate authority. This operation only needs to be done once."
		echo "Enter the same passphrase three times. This passphrase should be kept secure."
		echo "=============================================="

		echo "[ req ]" > openssl.cnf
		echo "default_bits = 1024" >> openssl.cnf
		echo "default_keyfile = privkey.pem" >> openssl.cnf
		echo "distinguished_name = req_distinguished_name" >> openssl.cnf
		echo "prompt = no" >> openssl.cnf
		echo "[ req_distinguished_name ]" >> openssl.cnf
		echo "C = $OP_CERT_COUNTRY" >> openssl.cnf
		echo "ST = $OP_CERT_STATE" >> openssl.cnf
		echo "L = $OP_CERT_LOCALITY" >> openssl.cnf
		echo "O = $OP_CERT_ORG" >> openssl.cnf
		echo "CN = CA" >> openssl.cnf

		openssl req -config openssl.cnf -newkey dsa:dsaparam.pem -sha1 -keyout cakey.pem -outform PEM -out careq.pem
		openssl x509 -req -inform PEM -in careq.pem -sha1 -signkey cakey.pem -outform PEM -out ca.pem -days $OP_CERT_CA_DAYS
		
		cp ca.pem cakey.pem casign.pem
		rm -f cakey.pem careq.pem
		echo "=============================================="
		echo "This certificate will expire in $OP_CERT_CA_DAYS days."
		echo "=============================================="

	;;
	genmanager)
		#ici c'est un peu la même fonction que gencakey
	
	*)
		echo "usage: op_cert command"
		echo "commands:"
		echo "dsaparam: generates DSA parameters"
		echo "gencakey: generates the certificate authority's private and public keys"
		echo "genmanager: generates the certificates used by the capture manager"
		echo "help: displays this text"
		echo "Certificate generation requires generating the DSA parameters first."
		echo "If the DSA parameter file (dsaparam.pem) already exists, there is no"
		echo "need to generate a new DSA parameter file."
	;;
esac

Et bien sûr il faut voir où placer les fichiers générés. ;-)

--------------------------------------------------------------------------------------------------------------------------------------------------
Exige beaucoup de toi-même et attends peu des autres. Ainsi beaucoup d'ennuis te seront épargnés. Confucius

Poste le Wednesday 27 August 2008 20:38:30
Répondre     Citer    
Re: Exécuter un fichier .bat

Citation
chrystelle
copy managercert.pem+managerkey.pem+ca.pem cert.pem
Ne s'agit-il pas là d'une concaténation ?

La commande ad'hoc serait alors
cat managercert.pem managerkey.pem ca.pem > cert.pem
...
?

Poste le Wednesday 27 August 2008 21:07:02
Répondre     Citer    
Aller à la page:  1 2 Page suivante
Page: 1 sur 2

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Executer un fichier .bat
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.
Nouveau sujet sur ce forum

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons