Pinging utilizzando una variabile


0

Sto provando a creare un file batch che eseguirà il ping di una variabile determinata dall'input dell'utente

per esempio. "Inserisci nome PC:" nome pc = 123

Quindi esegue 123.domain.com

@echo off
set /p UserInputPath = Enter chosen PC: 

ping %UserInputPath%

ping MyServerName

PAUSE

Ping MyServerName funziona bene

Ma ping %UserInputPath% non fa e mostra solo il menu "Aiuto" per Ping in CMD

Qualsiasi aiuto sarebbe apprezzato ::::MODIFICARE:::

ping %UserInputPath% -n 5

Restituisce questo errore: IP address must be specified.

Non puoi eseguire il ping di un nome host? (COME questo è quello che sto cercando di fare)

EDIT 2 ::

Questo è il mio ultimo:

@echo off
set /p UserInputPath = "Enter chosen PC: " 
PAUSE 

ping %UserInputPath%.store.domain.company.com

ping MyServerName

PAUSE

Sembra che tu abbia sbagliato l'ordine degli argomenti.
Daniel B

Questo è il mio ultimo: @echo off set / p UserInputPath = "Inserisci il PC scelto:" PAUSE ping% UserInputPath% .store.domain.company.com ping MyServerName PAUSE 10.88.132.72
Alex

Si prega di utilizzare formattazione corretta quando scrivi domande o risposte.
Daniel B

@DanielB mi dispiace per quello
Alex

Quando usi ping %UserInputPath%.store.domain.company.com, qual è esattamente l'input dell'utente? Se metti un echo %UserInputPath%.store.domain.company.com cosa stampa?
Karan

Risposte:


2
set /p UserInputPath = Enter chosen PC: 
                    ^ This space is included in the name of the variable

Quindi finisci con una variabile chiamata %UserInputPath %

Migliore utilizzo

set /p "UserInputPath=Enter Chosen PC: "
ping "%UserInputPath%.store.domain.company.com"

Non posso credere di non averlo visto .... sei un risparmiatore di vita assoluto !!!
Alex

1

Il seguente script funziona, almeno per me su Win7.

@echo off
set /p name="Enter name:"
ping %name%.google.com

Per prima cosa chiediamo all'utente di inserire il nome, quindi memorizzarlo name variabile e passarlo a ping (vedere %name% ) aggiunta google.com (solo come esempio!).


L'ho provato e ho ricevuto questo errore: la richiesta Ping non ha trovato l'host .store.domain.company.com. Controlla il nome e riprova.
Alex

Alex, assicurati che il tuo nome di dominio possa essere eseguito il ping direttamente dalla riga di comando.
user996142

@ user996142 - Posso eseguire il ping della macchina tramite la riga di comando senza problemi
Alex

Prova semplicemente ping %name% e inserisci il nome di dominio completo
user996142

purtroppo non funziona ...
Alex

0

Ecco un bizzarro script bash per te. Hacked fuori prima oggi per la domanda originale prima di rendersi conto che era per Windows. Considerato convertirlo in un file batch per te ma sembrava doloroso. Mi ha ricordato di scrivere script di avvio al college.

Devi usare Powershell o far ruotare un host * nix da qualche parte. Powershell v3 è davvero bello. Potresti convertirlo in PowerShell piuttosto facilmente in realtà.

Ci saranno alcuni voti negativi per questo, ma a chi importa. Qualcuno troverà utile questo script. Per lo meno puoi saccheggiare la logica e regex.

Testato in Debian.

#!/bin/bash
# ------------------------------------------------------------------
# superuserping.sh # Can be changed :P
# /usr/bin/superuserping.sh # Put it wherever you like...
# ------------------------------------------------------------------
# Usage:           ./superuserping.sh [fqdn|shortname|ip]
#                  If no argument is passed it will ask for one
# Author:          Alex Atkinson
# Author Date:     May 25, 2015

# ------------------------------------------------------------------
# VARIABLES
# ------------------------------------------------------------------
domain="domain.com"
rxshort='^[A-Za-z0-9]{1,63}$'
rxfqdn='^([A-Za-z0-9-]{1,63}\.)+[A-Za-z]{2,6}$'
rxip='^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'

# ------------------------------------------------------------------
# Check for argument. Get one if none found.
# ------------------------------------------------------------------
if [ -z $1 ]; then
    echo -n "Enter the hostname or IP to ping and press [ENTER]: "
    read host
else
    host=$1
fi

# ------------------------------------------------------------------
# ARGUMENT VALIDATION
# ------------------------------------------------------------------
checkshort=$([[ $host =~ $rxshort ]])
checkshort=$?
checkfqdn=$([[ $host =~ $rxfqdn ]])
checkfqdn=$?
checkip=$([[ $host =~ $rxip ]])
checkip=$?

# ------------------------------------------------------------------
# FUNCTIONS
# ------------------------------------------------------------------
function check_userinput()
{
    # Validate userinput against shortname, fqdn, and IP regex. If shortname then add domain.
    if [[ $checkshort == '0' ]] || [[ $checkfqdn == "0" ]] || [[ $checkip == "0" ]] ; then
        if [[ $checkip == 1 ]]; then
            if [[ $host != *$domain ]]; then
                host=$host.$domain
            fi
        fi
    else
        echo -e "\e[00;31mERROR\e[00m: ERROR:" $host "does not appear to be a valid shortname, fqdn, or IP."
        exit 1
    fi
}

function resolve_host()
{
    # Check for DNS host resolution.
    dnscheck=$(host $host)
    if [[ $? -eq 0 ]]; then
        echo -e "\n"$dnscheck "\n"
    else
        echo -e "\n\e[00;31mERROR\e[00m: DNS was unable to resolve the provided hostname or IP:" $host".\n"
        echo -n "Press [ENTER] key to continue with ping, or [Q] to quit..."
        read -n 1 -s key
        if [[ $key = q ]] || [[ $key = Q ]]; then
            echo -e "\nExiting...\n"
            exit 1

        fi
    fi
}

# ------------------------------------------------------------------
# MAIN OPERATIONS
# ------------------------------------------------------------------
check_userinput
resolve_host
ping $host

-1

Sembra che tu sia caduto nel trappola di espansione ritardata e lo snippet di codice è incluso tra ( e ). Quando si utilizza una variabile modificata all'interno di tale blocco, è necessario abilitare l'espansione ritardata ...

@echo off
SETLOCAL enableextensions enabledelayedexpansion

set "UserInputPath=AnotherServer"

(
    set "UserInputPath=MyServerName"
    rem set /p "UserInputPath = Enter chosen PC: "

    echo 1st percent-expansion %UserInputPath%
    echo 1st delayedexpansion  !UserInputPath!
)
echo(
echo 2nd percent-expansion %UserInputPath%
echo 2nd delayedexpansion  !UserInputPath!

Produzione:

1st percent-expansion AnotherServer
1st delayedexpansion  MyServerName

2nd percent-expansion MyServerName
2nd delayedexpansion  MyServerName
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.