This was exactly what I was looking for. Thanks! On Mon, Oct 31, 2011 at 4:48 PM, Chris Rebert <c...@rebertia.com> wrote:
> On Mon, Oct 31, 2011 at 1:16 PM, extraspecialbitter > <pauldavidm...@gmail.com> wrote: > > I'm trying to write a simple Python script to print out network > > interfaces (as found in the "ifconfig -a" command) and their speed > > ("ethtool <interface>"). The idea is to loop for each interface and > > print out its speed. os.popen seems to be the right solution for the > > os.popen() is somewhat deprecated. Use the subprocess module instead. > > > ifconfig command, but it doesn't seem to like me passing the interface > > variable as an argument. Code snippet is below: > > > > ============ > > > > #!/usr/bin/python > > > > # Quick and dirty script to print out available interfaces and their > > speed > > > > # Initializations > > > > output = " Interface: %s Speed: %s" > > > > import os, socket, types > > > > fp = os.popen("ifconfig -a") > > dat=fp.read() > > dat=dat.split('\n') > > for line in dat: > > if line[10:20] == "Link encap": > > interface=line[:9] > > cmd = 'ethtool %interface' > > cmd will literally contain a percent-sign and the word "interface". If > your shell happens to use % as a prefix to indicate a variable, note > that Python variables are completely separate from and not accessible > from the shell. So either ethtool will get the literal string > "%interface" as its argument, or since there is no such shell > variable, after expansion it will end up getting no arguments at all. > Perhaps you meant: > cmd = "ethtool %s" % interface > Which could be more succinctly written: > cmd = "ethtool " + interface > > > print cmd > > gp = os.popen(cmd) > > fat=gp.read() > > The subprocess equivalent is: > fat = subprocess.check_output(["ethtool", interface]) > > > fat=fat.split('\n') > > > > ============= > > > > I'm printing out "cmd" in an attempt to debug, and "interface" seems > > to be passed as a string and not a variable. Obviously I'm a newbie, > > and I'm hoping this is a simple syntax issue. Thanks in advance! > > Cheers, > Chris > -- > http://rebertia.com > -- Paul David Mena -------------------- pauldavidm...@gmail.com
-- http://mail.python.org/mailman/listinfo/python-list