IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Erreur script bash


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 61
    Points : 40
    Points
    40
    Par défaut Erreur script bash
    Bonjour

    J'utilise lubuntu

    Dans ce script bash:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    #!/bin/bash
     
    # get two parameters : ip and port, try to connect to ssl vpn. if success return 0, else return 1
     
     
    if [ "x$1" ==  "x" ];
    then
    	echo "Usage: vpn.sh connect ip port ";
    	echo "	     vpn.sh disconnect ";
    	exit 1;
    fi 
     
    if [ "x$1" == "xdisconnect" ];
    then
    	# delete old sslvpn and collect original ip address for route delete
     
    	echo $(cat vpndel.cmd | vpncmd | grep "^VPN Server Hostname" | cut -d "|" -f 2 | cut -d " " -f 1 | cut -d ":" -f 1 ) | xargs sudo ./route.sh del;
    	exit 0;
    fi 
     
    if [ "x$1" == "xconnect" ];
    then
     
    	if [ "x$2" == "x" ] || [ "x$3" == "x" ];
    	then
    		echo "Usage: vpn.sh connect ip port ";
    		exit 1;
    	fi
    fi		
     
    # delete old sslvpn and collect original ip address for route delete
    echo $(cat vpndel.cmd | vpncmd | grep "^VPN Server Hostname" | cut -d "|" -f 2 | cut -d " " -f 1 | cut -d ":" -f 1 ) | xargs sudo ./route.sh del;
     
     
     
    # ensure ip/port is open via nc(netcat). 
     
    alive=$(nc -z --timeout=1 $2 $3 )
     
    if [ "x$alive" == "x" ]; then
    	echo "nc $2:$3 succeeds.";
    else
    	echo "nc $2:$3 fails.";
        	exit 1;
    fi
     
     
     
    # generate ssl.vpn
     
    ./vpndef.sh $2 $3
     
    # delete old sslvpn and collect original ip address for route delete
     
    echo $(cat vpndel.cmd | /usr/local/vpnclient/vpncmd | grep "^VPN Server Hostname" | cut -d "|" -f 2 | cut -d " " -f 1 | cut -d ":" -f 1 ) | xargs sudo ./route.sh del
     
    # import new vpn definition
     
    cat vpnimport.cmd | /usr/local/vpnclient/vpncmd
    cat vpnconnect.cmd | /usr/local/vpnclient/vpncmd  
     
    sleep 3
     
    isConnected=$(cat vpnlist.cmd | /usr/local/vpnclient/vpncmd | grep  Status  | cut -d "|" -f 2)
     
    echo "vpn status is $isConnected"
     
    if [ $isConnected != "Connected" ];
    then
    	#disconnect the old vpn first
    	./vpn.sh disconnect
    	exit 1;
    fi;
     
    # add new route 
    echo $(cat vpnlist.cmd | /usr/local/vpnclient/vpncmd | grep "^VPN Server Hostname" | cut -d "|" -f 2 | cut -d " " -f 1 | cut -d ":" -f 1 ) | xargs sudo ./route.sh add
     
    # test if vpnconnection is up
     
     
    connected=$(nc -z --timeout=1 www.youtube.com 80 )
     
    if [ "x$connected" == "x" ]; then
            echo "vpn connection to $2:$3 succeeds.";
    	exit 0;
    else
            echo "vpn connection to $2:$3 fails.";
            exit 1;
    fi
    j'ai cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Specify the host name or IP address of the computer that the destination VPN Client is operating on. 
    If nothing is input and Enter is pressed, connection will be made to localhost (this computer).
     
    Error occurred. (Error code: 1)
    Connection to the server failed. Check network connection and make sure that address and port number of destination server are correct.
    vpn status is 
    ./vpn.sh: ligne 68 : [: != : opérateur unaire attendu
    vpn server ip missing!  ./route.sh add/del vpn_server_ip [device]
    nc: invalid option -- '-'
    This is nc from the netcat-openbsd package. An alternative nc is available
    in the netcat-traditional package.
    usage: nc [-46bCDdhjklnrStUuvZz] [-I length] [-i interval] [-O length]
    	  [-P proxy_username] [-p source_port] [-q seconds] [-s source]
    	  [-T toskeyword] [-V rtable] [-w timeout] [-X proxy_protocol]
    	  [-x proxy_address[:port]] [destination] [port]
     succeeds.tion to 116.80.157.162:1382
    comment résoudre ce problème s'il vous plait

    Voici le script nommé "route.sh" si besoin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    #!/bin/bash
    if [ "x$2" == "x" ]; 
    then
      echo "vpn server ip missing!  ./route.sh add/del vpn_server_ip [device]" 
      exit 1
    fi
     
    if [ "x$3" == "x" ];
    then
    	echo "device not specified. Default to wlan0";
    	dev=wlan0;
    else
    	dev=$3;
    fi
     
     
    	case "$1" in
     
    	add)
     
     
     
    	# restore default route to home network
    	ip route delete default
    	ip route add default via 192.168.100.1 dev $dev
     
    	# obtain ip address for vpn_se
    	ifdown vpn_se
    	ifup vpn_se
     
     
    	# add route to vpn server
     
    	ip route add $2/32 via 192.168.100.1 dev $dev
    	ip route delete default
    	ip route add default via 10.211.254.254 dev vpn_se
     
     
    	;;
     
    	del)
     
     
    	ip route del $2/32
    	ip route del default
    	ip route add default via 192.168.100.1 dev $dev
    	ifdown vpn_se
     
     
    	;;
     
    	esac
    j'ai trouvé ce script ici:

    https://github.com/lukeluo/linux-deb...e/luke/vpngate

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 744
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 744
    Points : 15 160
    Points
    15 160
    Par défaut
    Salut,

    ta variable $IsConnected est vide, ça se voit bien sur la ligne 6 du listing des erreurs (et les autres découlent de celle-ci, suffit de lire...)
    Enfin, en supposant (puisque tu ne nous le dis pas) que le 1er script s'appelle vpn.sh.

    Faudrait aussi que tu nous montres comment tu appelles ce script sur la ligne de commande (paramètres).

    Si N_BaH passe par là, il va te dire qu'il faut toujours protéger ses variables avec des doubles quotes : "$IsConnected"
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 556
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 556
    Points : 19 395
    Points
    19 395
    Par défaut
    il faut toujours protéger ses variables avec des doubles quotes guillemets :"$IsConnected"
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 246
    Points : 13 468
    Points
    13 468
    Par défaut
    Bonjour,

    loin de moi l'idée de faire le péteur de balloons, mais il me semble que le vocabulaire exact est:
    quote: '
    double quote: "
    guillemets: «(ouvrant) »(fermant)
    backquote: `
    apostrophe: ´
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Points : 4 130
    Points
    4 130
    Par défaut
    Bonsoir,

    Les termes double quote et guillemets sont en fait équivalent car il désignent la même chose.
    Ce qui varie en revanche, c'est la représentation typographique selon la langue.
    En langue anglaise les guillemets sont représenté ainsi " " alors qu'en langue française ils sont représentés « ».
    Donc Flodelarab et N_BaH c'est 1 point partout la balle au centre
    Winnt
    Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
    N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
    Pensez au bouton si votre problème est résolu.


    C'est en Linuxant qu'on devient .... geek
    Et c'est en LateXant qu'on devient flemmard
    Mon blog tout neuf.
    Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 744
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 744
    Points : 15 160
    Points
    15 160
    Par défaut
    Citation Envoyé par Winnt Voir le message
    (...) Ce qui varie en revanche, c'est la représentation typographique selon la langue.
    En langue anglaise les guillemets sont représenté ainsi " " alors qu'en langue française ils sont représentés « ».
    Plus exactement “ et ” en langue anglaise, mais c'est plus compliqué que d'appuyer bêtement sur une touche : en Unicode, c'est 201C et 201D.

    Citation Envoyé par Flodelarab Voir le message
    (...) loin de moi l'idée de faire le péteur de balloons, mais il me semble que le vocabulaire exact est:
    quote: '
    Le monde des typographes parle, pour cette horreur, de chiure de mouche !

    Bon, on est complètement HS, là,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut que de quotes...
    [HS]
    Ce n'est qu'une convention personnelle, bien sûr, mais j'ai tendance à utiliser indifféremment:
    pour ' : apostrophe (en français) et quote ou simple quote (en anglais ou franglais )
    pour " : guillemet (en français) et double quote (en anglais ou franglais again)

    Je trouve que "simple quote" et "double quote" (en franglais) sont particulièrement explicites!

    Et, pour les trucs plus incurvés (qui ne servent jamais dans des scripts (et qui sont souvent source de problèmes)), j'ajouterais volontiers l'adjectif "typographique" (bien que je doute que cette dénomination soit rigoureuse!):
    pour « et » : des guillemets typographiques (ouvrant et fermant (si besoin))

    Du coup, vu la remarque de Jipété, je pourrais même être tenté d'ajouter la langue:
    pour « et » : des guillemets typographiques français
    pour “ et : des guillemets typographiques anglais

    J'ai cru remarquer que le simple quote ', lorsqu'il est tapé depuis un PC (par exemple dans un mail), est souvent remplacé par un simple quote incurvé ´, avec comme conséquences:
    - il disparaît complètement dans la lecture de certains webmail
    - il est très mal digéré lorsqu'il est utilisé tel quel dans un script shell. Si j'ai bien compris, il ne peut pas être codé en iso-8859-1. Du coup, même lorsqu'il apparaît dans un commentaire, il pose des problèmes. Par exemple, emacs demande quel coding system il doit utiliser pour enregistrer un tel fichier.

    Remarque: le formatteur de ce site semble retourner le “ lorsqu'il est dans une balise CODE (-> ).
    [/HS]

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/10/2013, 00h30
  2. Erreur dans un script bash
    Par awalter1 dans le forum Linux
    Réponses: 2
    Dernier message: 05/01/2012, 18h27
  3. Script bash Erreur une fois mis en page
    Par kazylax dans le forum Linux
    Réponses: 4
    Dernier message: 01/05/2009, 13h56
  4. Requête POST dans un script bash
    Par desperado dans le forum Linux
    Réponses: 4
    Dernier message: 11/12/2007, 22h38
  5. Réponses: 3
    Dernier message: 25/04/2007, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo