[Tutor] string not found in variable

jark AJ jarkmx at gmail.com
Sun Mar 21 18:31:19 EDT 2021


Hi All,

     There are two actions I am trying to achieve here.

1) To check if the connectivity exists between the source and destination
2) To run the test five times to ensure there is no intermittent packet
loss we experience.

looking to use the nc command here in python, On a bash shell, we do it
using
for i in {1..5}; do nc -zvw 4 www.google.com 443 ; done

I have the following questions:

1) I am storing the subprocess output in a variable called output which is
of type string. It has succeeded in the output; however, when I use
print("succeeded!" in output), its returning false
2) Is there a way we could keep appending the output like a list in the
string. trying to do the success/failure logic at the end based on the
results of all five tests. Looking to achieve this using the variable which
stores the output.

Thank you in advance!

___

import subprocess

class Command(object):
    def __init__(self, cmd):
        self.cmd = cmd

    def run(self, shell=False):
        try:
            print("Executing Command >>", self.cmd)
            output = subprocess.Popen(
                self.cmd.split(), stdout=subprocess.PIPE, shell=shell
            )
            return output.communicate()[0]
        except subprocess.CalledProcessError as e:
            return e.returncode

    def __str__(self):
        return str(self.cmd)

count = 0
while count <= 5:
    nc_command = Command("nc -zvw 4 www.google.com 443")
    output = Command.run(nc_command)
    count += 1
    print(output)
    print(type(output))
    print("succeeded!" in output)

___


Output:
__

('Executing Command >>', 'nc -zvw 4 www.google.com 443')
Connection to www.google.com port 443 [tcp/https] succeeded!

<type 'str'>
False
__


More information about the Tutor mailing list