[Tutor] Using dictionary key values as subprocess arguments

mike at froward.org mike at froward.org
Thu Aug 1 19:51:48 CEST 2013


Hi all,

I'm trying to use dictionary key values as arguments being passed via
subprocess. The following is supposed to use argv arguments passed for the
target host, and direction to turn the ipmi interface up on or off. When I
run it I get an error about TypeError: format requires a mapping

Any insight would be appreciated, thanks!


#!/usr/bin/env python
from sys import argv
import subprocess

script, targ, switch = argv

ren      = {'hostn':'ren.ipmi', 'usern':'Admin', 'passw':'p0w1r'}
stimpy   = {'hostn':'stimpy.ipmi', 'usern':'Admin', 'passw':'p0w1r'}
lrrr     = {'hostn':'lrrr.ipmi', 'usern':'ADMIN', 'passw':'p0w1r'}
kif      = {'hostn':'kif.ipmi', 'usern':'ADMIN', 'passw':'p0w1r'}
ndnd     = {'hostn':'ndnd.ipmi', 'usern':'ADMIN', 'passw':'p0w1r'}
zapp     = {'hostn':'zapp.ipmi', 'usern':'ADMIN', 'passw':'p0w1r'}


def run():
    if switch == "on":
        on()
    elif switch == "off":
        off()

def on():
    turnOn = ['ipmitool', '-I', 'lan', '-U', '%(usern)s' % targ, '-P',
'%(passw)s' % targ, '-H', '%(hostn)s' % targ, 'chassis', 'power',
'on']
    subprocess.call(turnOn)
    print "on!"

def off():
    turnOff = ['ipmitool', '-I', 'lan', '-U', '%(usern)s' % targ, '-P',
'%(passw)s' % targ, '-H', '%(hostn)s' % targ, 'chassis', 'power',
'off']
    print "off"
    subprocess.call(turnOff)

run()




More information about the Tutor mailing list