Question

I am trying to make a def statement that uses os.system(ping) with a variable, and it does not want to take the variable:

import os

def myping(myip):
    print(myip)
    ip1 = os.system("ping -c 1 myip")
    print(ip1)
myping("127.0.0.1")

This returns a code of 512 (fail, rather than a 0, which is success) and then "ping: unknown host myip". Depending on how I format the myip in the os.system statement I can also get a 256 with another error. I have tried various ways of formatting it, including quotation marks, parentheses, percent signs and such, and I'm just not sure what I'm doing wrong.

I can tell I am making it think I want to scan for myip (literal string). What syntax do I have wrong here? Thanks.

By the way, print(myip) within the def statement does give me 127.0.0.1.

Était-ce utile?

La solution

You probably want to get the value of myip into the argument to os.system:

ip1 = os.system('ping -c 1 {}'.format(myip))

or (old style, deprecated in python 3.1):

ip1 = os.system("ping -c 1 %s" % myip)

Autres conseils

another option is

ip = os.system(f'ping -c 1 {myip}')
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top