-2
votes

Comment puis-je exécuter un ifconfig, saisir l'adresse IPv4, placez-le dans une variable, puis de produire les résultats en shell?

J'espère que tout va bien,

J'ai du mal à mettre quelque chose ensemble, alors je pensais demander ici. P>

J'essaie de trouver un moyen de trouver un script de shell que

  • exécute ifconfig li>
  • attrape juste l'INET (IPv4) LI>
  • placez-le dans une variable li>
  • echo "mon IP" li>
  • Puis imprimez la valeur de variables li> ul>

    J'ai pu faire cela avec succès dans BASH avec une commande Ping: P>

    @for /f "delims=[] tokens=2" %%a in ('ping -4 -n 1 %ComputerName% ^|
    findstr [') do (
        set "MY_IP=%%a"
    )
    )
    
    echo IP of Current Computer : %MY_IP%
    pause>nul & exit
    


4 commentaires

Pourquoi avez-vous des étiquettes de lot et de bash? Le code que vous avez posté est lot, mais vous avez alors quatre autres tags liés à Linux. Pour quel système voulez-vous du code?


Batsh.org peut être capable de vous aider. Bonne chance.


Bienvenue sur le débordement de la pile! ifconfig n'existe pas par défaut sur les machines Windows. Il est disponible par défaut % \ systemroot% \ system32 \ ipconfig.exe . Le deuxième caractère est p pour la configuration de protocole Internet et non f comme sur Linux pour la configuration de l'interface. Nous attendons sur Stack Overflow que les programmeurs d'abord de la recherche, le code suivant et le test et si le code ne fonctionne pas et que le programmeur ne peut pas savoir la raison, puis demander de l'aide. Voir les résultats de la recherche pour [Fichier de lots] IPCONFIG Obtenez l'adresse IP .


Voir aussi les résultats de la recherche pour [Fichier de lots] WMIC Get Adresse IP .


4 Réponses :


1
votes

Tout d'abord, si vous recherchez votre adresse IP publique, vous pouvez simplement utiliser

ip=$(ifconfig eth0 | grep 'inet addr' | cut -d: -f2 | awk '{print $1}')
echo $ip



0
votes

J'ai trouvé que cela peut faire le travail

address=$(ifconfig | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | grep -Ev '(255|127)')
echo ${address}


0 commentaires

1
votes

Utilisez l'un des éléments suivants

    #!/usr/bin/bash
    
    readarray -t interfaces < <(ip l | awk -F ":" '/^[0-9]+:/{dev=$2 ; if ( dev !~ /^ lo$/) {print $2}}')
    for i in "${interfaces[@]// /}" ; 
        do 
            IP=`ip addr show $i | grep -Po 'inet \K[\d.]+'`
            if [ -n $IP ]; then
                echo "Interface is $i"
                echo $IP
            fi
        done


0 commentaires

0
votes

Comme vous ne l'avez pas précisé si vous recherchez un linux script et ces balises basées sur Nix ont été modifiées, ce qui suit est un exemple de Windows , qui devrait atteindre quoi votre code fourni a tenté de faire. Utilisez la commande ping code> contre le nom de l'ordinateur pour renvoyer l'adresse IPv4, enregistrez-la sous forme de variable et imprimez les détails à l'hôte em>.

Je l'ai écrit dans telle Un moyen de lui permettre de fonctionner même dans Windows 2000, comme les versions antérieures PING.EXE CODE>, n'ont pas eu l'option -4 code>. p> xxx PRE>

Si vous souhaitez l'utiliser uniquement sur les versions modernes de Windows OS, la version plus courte suivante doit suffire: P>

@Echo Off
SetLocal EnableExtensions
Set "MY_IP="
For /F "Tokens=2 Delims=[]" %%G In (
    '""%__APPDIR__%ping.exe" "%COMPUTERNAME%" -n 1 -4 2>NUL | "%__APPDIR__%find.exe" /I "%COMPUTERNAME%""'
) Do Set "MY_IP=%%G"
If Not Defined MY_IP GoTo :EOF
Echo IP of Current Computer : %MY_IP%
Pause


0 commentaires