Python script for Fabric Path Vlan audit?

Has anyone written any kind of scripts/automation to audit a NXOS FP domain and ensure CU vlans are properly configured?

Have you tried looking on Github? You might a Python script that you can re-use.

Similar Messages

  • Fabric path vlan question

    Setup as shown in the attached. S1-S4 are Fabric path spine switches. Will it work ? or I need to configure both vlan 10 and vlan 20 in "mode fabricpath" on all S1 to S4 even though only vlan 10 is required in S1-S2 and vlan 20 required in S3-S4.

    Have you tried looking on Github? You might a Python script that you can re-use.

  • Need help with python script for Deluge

    I am using Deluge 1.3.2 with web server, and all works fine, I use this script in the Deluge settings to execute upon torrent completion:
    #!/bin/bash
    torrentid=$1
    torrentname=$2
    torrentpath=$3
    torrenttimedelta=`/usr/bin/python2 /home/bobby/scripts/deluge/torrentTimeDelta.py $1`
    subject="Started download new torrent!"
    message="$torrentname to $torrentpath"
    echo -e `date`"::Finished downloading torrent:$2 in: $3" with id:$torrentid >> ~/logs/scripts.log
    echo -e `sendEmail -t [email protected] -f [email protected] -u "deluge server notification: torrent $torrentname is complete!" -m "$torrentname has completed downloading at: $torrentpath and took $torrenttimedelta to complete :)" -xu [email protected] -xp password -v -o tls=yes -s email.com` >> ~/logs/scripts.log
    echo ---------------------------------------- >> ~/logs/scripts.log
    This is to email me when a torrent is done and works. What I wanted to add to this email was the time taken to complete the torrent. I have gotten help from Deluge forum in this thread: http://forum.deluge-torrent.org/viewtop … =9&t=36989  However I think it's something with Python within Arch that is the obstacle, and so that helpful person can't do much more IMO. The python script I'm using is:
    #!/usr/bin/python2
    from deluge.ui.client import client
    from twisted.internet import reactor
    d = client.connect()
    def on_connect_success(result):
    print "Connection was successful!"
    def on_get_torrent_value(value):
    for torrent in value:
    print "%s: %s" % (torrent, value[torrent]["name"])
    client.disconnect()
    reactor.stop()
    client.core.get_torrents_status({}, ["name"]).addCallback(on_get_torrent_value)
    d.addCallback(on_connect_success)
    def on_connect_fail(result):
    print "Connection failed!"
    print "result:", result
    d.addErrback(on_connect_fail)
    reactor.run()
    Now if I call this from shell directly, it works. However, including it with my email script at the top, Deluge itself freezes and no email is sent. I run ps aux | grep deluge and I can see that the script has run, but apparently died and all is just hanging. I kill the script process and Deluge resumes just fine, the email is sent. Kinda confused how to remedy this, appreciate any help Thanks
    P.S. When I get the email, the part that says ""$torrentname has completed downloading at: $torrentpath and took $torrenttimedelta to complete "" shows nothing where $torrenttimedelta should be, it just says "and took to complete"

    [edit]  Sorry, I don't use deluge and I messed up my test script. If the script is executable try `/home/bobby/scripts/deluge/torrentTimeDelta.py $1`
    Are there any other errors? or try running bash with debug output to see if it will tell you something else
    The problem you are having is bash doesn't recognize variables inside the tick marks.
    Hope that helps
    Last edited by rickeyski (2011-07-05 19:27:36)

  • Script for Transfering paths between documents?.. help

    Dear all,
    I can see that this question has been asked a few times, but the answers don't work for me.
    All I need to do is to make a script (I am new to this).. which automates the transfer of the paths to the document with the same file name.
    E.g.: File 1: Original tif or .psd file with file name fridaystudios64 which resides in a folder called tif. File 2: Jpg image which has been sent away for clipping and has come back. It also has the same filename fridaystudio64 but resides in a folder called Paths..
    The file name is always different.. and there are over 10 for each batch.
    The file size of these documents is exactly the same, but the colour space is different.. (the tif or .psd is Adobe RGB and the jpg is sRGB).
    The file needs to automate by recognising the other file with the same name, opening up, and copying it over, and then just saving it.
    I could do this manually, but it takes about 3 minutes a day, and sometimes longer, and thought if it's possible then it would be cool.
    Can anyone please help with this, or already have a script they are generous enough to give me..
    Kind regards,

    Does this help?
    // select folder, if folder »paths« exists beside that folder transfer paths from jpgs to psds, tifs from first folder;
    // 2014, use it at your own risk;
    #target photoshop
    // dialog for folder-selection;
    var theFolder1 = Folder.selectDialog ("select folder 1");
    var theFolder2 = Folder(theFolder1.parent+"/Paths");
    //var theFolder2 = Folder.selectDialog ("select folder 2");
    if (theFolder1 && theFolder1) {
    var theFiles1 = theFolder1.getFiles(getSomeFiles);
    // work through folders;
    for (var m = 0; m < theFiles1.length; m++) {
              var theFile = theFiles1[m];
    // if corresponding jpg exists;
              var thePath = theFolder2+"/"+theFile.name.replace(/\.\D{3}$/i, ".jpg");
              if (File(thePath).exists == true) {
    // open jpg;
                        var theFile2 = app.open(File(thePath));
    // if jpg has path/s;
                        if (theFile2.pathItems.length > 0) {
                                  var thePaths = new Array;
                                  var theNames = new Array;
    // collect paths;
                                  for (var n = 0; n < theFile2.pathItems.length; n++) {
                                            var thisPath = theFile2.pathItems[n];
                                            theNames.push (thisPath.name);
                                            thePaths.push (collectPathInfoFromDesc2012(theFile2, thisPath));
                                  theFile2.close(SaveOptions.DONOTSAVECHANGES)
    // open other file;
                                  var theFile = app.open(theFile);
    // create paths;
                                  for (var o = 0; o < thePaths.length; o++) {
                                            var theName = theNames[o];
    // if path of that name exists;
                                            var theCheck = false
                                            while (theCheck == false) {
                                                      try {
                                                                theFile.pathItems.getByName(theName);
                                                                theName = theName + "_"
                                                      catch (e) {theCheck = true};
                                            createPath2012(thePaths[o], theName)
    // close and save;
                                  theFile.close(SaveOptions.SAVECHANGES);
                        else {theFile2.close(SaveOptions.DONOTSAVECHANGES)}
    ////// get psds and tifs from files //////
    function getSomeFiles (theFile) {
        if (theFile.name.match(/\.(tif|psd)$/i)) {
            return true
    ////// get document’s //////
    function getDocumentsID () {
    var ref = new ActionReference();
    ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
    var docDesc = executeActionGet(ref);
    var docID = docDesc.getInteger(stringIDToTypeID("documentID"));
    var docIndex = docDesc.getInteger(stringIDToTypeID("itemIndex"));
    return [docID, docIndex]
    ////// collect path info from actiondescriptor, smooth added //////
    function collectPathInfoFromDesc2012 (myDocument, thePath) {
    var originalRulerUnits = app.preferences.rulerUnits;
    app.preferences.rulerUnits = Units.POINTS;
    // based of functions from xbytor’s stdlib;
    var ref = new ActionReference();
    for (var l = 0; l < myDocument.pathItems.length; l++) {
              var thisPath = myDocument.pathItems[l];
              if (thisPath == thePath && thisPath.name == "Work Path") {
                        ref.putProperty(cTID("Path"), cTID("WrPt"));
              if (thisPath == thePath && thisPath.name != "Work Path" && thisPath.kind != PathKind.VECTORMASK) {
                        ref.putIndex(cTID("Path"), l + 1);
              if (thisPath == thePath && thisPath.kind == PathKind.VECTORMASK) {
            var idPath = charIDToTypeID( "Path" );
            var idPath = charIDToTypeID( "Path" );
            var idvectorMask = stringIDToTypeID( "vectorMask" );
            ref.putEnumerated( idPath, idPath, idvectorMask );
    var desc = app.executeActionGet(ref);
    var pname = desc.getString(cTID('PthN'));
    // create new array;
    var theArray = new Array;
    var pathComponents = desc.getObjectValue(cTID("PthC")).getList(sTID('pathComponents'));
    // for subpathitems;
    for (var m = 0; m < pathComponents.count; m++) {
              var listKey = pathComponents.getObjectValue(m).getList(sTID("subpathListKey"));
              var operation1 = pathComponents.getObjectValue(m).getEnumerationValue(sTID("shapeOperation"));
              switch (operation1) {
                        case 1097098272:
                        var operation = 1097098272 //cTID('Add ');
                        break;
                        case 1398961266:
                        var operation = 1398961266 //cTID('Sbtr');
                        break;
                        case 1231975538:
                        var operation = 1231975538 //cTID('Intr');
                        break;
                        default:
    //                    case 1102:
                        var operation = sTID('xor') //ShapeOperation.SHAPEXOR;
                        break;
    // for subpathitem’s count;
              for (var n = 0; n < listKey.count; n++) {
                        theArray.push(new Array);
                        var points = listKey.getObjectValue(n).getList(sTID('points'));
                        try {var closed = listKey.getObjectValue(n).getBoolean(sTID("closedSubpath"))}
                        catch (e) {var closed = false};
    // for subpathitem’s segment’s number of points;
                        for (var o = 0; o < points.count; o++) {
                                  var anchorObj = points.getObjectValue(o).getObjectValue(sTID("anchor"));
                                  var anchor = [anchorObj.getUnitDoubleValue(sTID('horizontal')), anchorObj.getUnitDoubleValue(sTID('vertical'))];
                                  var thisPoint = [anchor];
                                  try {
                                            var left = points.getObjectValue(o).getObjectValue(cTID("Fwd "));
                                            var leftDirection = [left.getUnitDoubleValue(sTID('horizontal')), left.getUnitDoubleValue(sTID('vertical'))];
                                            thisPoint.push(leftDirection)
                                  catch (e) {
                                            thisPoint.push(anchor)
                                  try {
                                            var right = points.getObjectValue(o).getObjectValue(cTID("Bwd "));
                                            var rightDirection = [right.getUnitDoubleValue(sTID('horizontal')), right.getUnitDoubleValue(sTID('vertical'))];
                                            thisPoint.push(rightDirection)
                                  catch (e) {
                                            thisPoint.push(anchor)
                                  try {
                                            var smoothOr = points.getObjectValue(o).getBoolean(cTID("Smoo"));
                                            thisPoint.push(smoothOr)
                                  catch (e) {thisPoint.push(false)};
                                  theArray[theArray.length - 1].push(thisPoint);
                        theArray[theArray.length - 1].push(closed);
                        theArray[theArray.length - 1].push(operation);
    // by xbytor, thanks to him;
    function cTID (s) { return cTID[s] || cTID[s] = app.charIDToTypeID(s); };
    function sTID (s) { return sTID[s] || sTID[s] = app.stringIDToTypeID(s); };
    // reset;
    app.preferences.rulerUnits = originalRulerUnits;
    return theArray;
    ////// create a path from collectPathInfoFromDesc2012-array //////
    function createPath2012(theArray, thePathsName) {
    var originalRulerUnits = app.preferences.rulerUnits;
    app.preferences.rulerUnits = Units.POINTS;
    // thanks to xbytor;
    cTID = function(s) { return app.charIDToTypeID(s); };
    sTID = function(s) { return app.stringIDToTypeID(s); };
        var desc1 = new ActionDescriptor();
        var ref1 = new ActionReference();
        ref1.putProperty(cTID('Path'), cTID('WrPt'));
        desc1.putReference(sTID('null'), ref1);
        var list1 = new ActionList();
    for (var m = 0; m < theArray.length; m++) {
              var thisSubPath = theArray[m];
        var desc2 = new ActionDescriptor();
        desc2.putEnumerated(sTID('shapeOperation'), sTID('shapeOperation'), thisSubPath[thisSubPath.length - 1]);
        var list2 = new ActionList();
        var desc3 = new ActionDescriptor();
        desc3.putBoolean(cTID('Clsp'), thisSubPath[thisSubPath.length - 2]);
        var list3 = new ActionList();
    for (var n = 0; n < thisSubPath.length - 2; n++) {
              var thisPoint = thisSubPath[n];
        var desc4 = new ActionDescriptor();
        var desc5 = new ActionDescriptor();
        desc5.putUnitDouble(cTID('Hrzn'), cTID('#Rlt'), thisPoint[0][0]);
        desc5.putUnitDouble(cTID('Vrtc'), cTID('#Rlt'), thisPoint[0][1]);
        desc4.putObject(cTID('Anch'), cTID('Pnt '), desc5);
        var desc6 = new ActionDescriptor();
        desc6.putUnitDouble(cTID('Hrzn'), cTID('#Rlt'), thisPoint[1][0]);
        desc6.putUnitDouble(cTID('Vrtc'), cTID('#Rlt'), thisPoint[1][1]);
        desc4.putObject(cTID('Fwd '), cTID('Pnt '), desc6);
        var desc7 = new ActionDescriptor();
        desc7.putUnitDouble(cTID('Hrzn'), cTID('#Rlt'), thisPoint[2][0]);
        desc7.putUnitDouble(cTID('Vrtc'), cTID('#Rlt'), thisPoint[2][1]);
        desc4.putObject(cTID('Bwd '), cTID('Pnt '), desc7);
        desc4.putBoolean(cTID('Smoo'), thisPoint[3]);
        list3.putObject(cTID('Pthp'), desc4);
        desc3.putList(cTID('Pts '), list3);
        list2.putObject(cTID('Sbpl'), desc3);
        desc2.putList(cTID('SbpL'), list2);
        list1.putObject(cTID('PaCm'), desc2);
        desc1.putList(cTID('T   '), list1);
        executeAction(cTID('setd'), desc1, DialogModes.NO);
    if (hasVectorMask() == false) {
    var myPathItem = app.activeDocument.pathItems[app.activeDocument.pathItems.length - 1];
    else {
    var myPathItem = app.activeDocument.pathItems[app.activeDocument.pathItems.length - 2];
    myPathItem.name = thePathsName;
    app.preferences.rulerUnits = originalRulerUnits;
    return myPathItem
    // from »Flatten All Masks.jsx« by jeffrey tranberry;
    // Function: hasVectorMask
    // Usage: see if there is a vector layer mask
    // Input: <none> Must have an open document
    // Return: true if there is a vector mask
    function hasVectorMask() {
              var hasVectorMask = false;
              try {
                        var ref = new ActionReference();
                        var keyVectorMaskEnabled = app.stringIDToTypeID( 'vectorMask' );
                        var keyKind = app.charIDToTypeID( 'Knd ' );
                        ref.putEnumerated( app.charIDToTypeID( 'Path' ), app.charIDToTypeID( 'Ordn' ), keyVectorMaskEnabled );
                        var desc = executeActionGet( ref );
                        if ( desc.hasKey( keyKind ) ) {
                                  var kindValue = desc.getEnumerationValue( keyKind );
                                  if (kindValue == keyVectorMaskEnabled) {
                                            hasVectorMask = true;
              }catch(e) {
                        hasVectorMask = false;
              return hasVectorMask;

  • Pywu: Simple python script for Weather Underground's API

    This is a script I wrote several years ago for use with conky. I've cleaned it up some and released it for anyone else who may like to use it. It allows you to pull data from Weather Underground's API.
    You need an API key from here to use it.
    Github repo is here: https://github.com/dh4/pywu
    An AUR package is here: https://aur.archlinux.org/packages/pywu/
    Let me know if you find it useful or have any issues with it.

    dibblethewrecker wrote:i really want to learn python - when ever i think about it i always feel to tired to start!
    just download diveintopython and the official documentation at python.org, that should keep you busy for a while,

  • Unexpected error when running Python scripts?

    I always get this crash when I try to run python scripts. Anyone know what is causing this or how to fix it?
    Process:         Python [8022]
    Path:            /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/C ontents/MacOS/Python
    Identifier:      Python
    Version:         2.7.2 (2.7.2)
    Code Type:       X86-64 (Native)
    Parent Process:  ??? [1]
    User ID:         501
    Date/Time:       2012-11-23 05:13:46.990 -0700
    OS Version:      Mac OS X 10.8.2 (12C60)
    Report Version:  10
    Interval Since Last Report:          62859 sec
    Crashes Since Last Report:           6
    Per-App Crashes Since Last Report:   4
    Anonymous UUID:                      9A83E25A-0D91-6DC9-960B-E7126A515A89
    Crashed Thread:  0  Dispatch queue: com.apple.main-thread
    Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
    Exception Codes: KERN_INVALID_ADDRESS at 0x00007faa1b19ad5e
    VM Regions Near 0x7faa1b19ad5e:
        MALLOC_TINY            00007faa1b000000-00007faa1b100000 [ 1024K] rw-/rwx SM=COW 
    -->
        MALLOC_SMALL           00007faa1b800000-00007faa1c800000 [ 16.0M] rw-/rwx SM=COW 
    Application Specific Information:
    *** single-threaded process forked ***
    Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
    0   libsystem_c.dylib                       0x00007fff87fafde1 tiny_free_list_add_ptr + 112
    1   libsystem_c.dylib                       0x00007fff87fb354e tiny_malloc_from_free_list + 1078
    2   libsystem_c.dylib                       0x00007fff87fb3ad8 szone_malloc_should_clear + 971
    3   libsystem_c.dylib                       0x00007fff87fa6153 malloc_zone_malloc + 71
    4   libsystem_c.dylib                       0x00007fff87fa6c61 realloc + 82
    5   org.python.python                       0x00000001065e6ac9 0x10658b000 + 375497
    6   org.python.python                       0x00000001065e4b23 0x10658b000 + 367395
    7   org.python.python                       0x00000001065e6646 0x10658b000 + 374342
    8   org.python.python                       0x00000001065a4494 PyEval_EvalFrameEx + 8967
    9   org.python.python                       0x00000001065a2147 PyEval_EvalCodeEx + 1934
    10  org.python.python                       0x00000001065dbd7a 0x10658b000 + 331130
    11  org.python.python                       0x000000010659a6c6 PyObject_Call + 97
    12  org.python.python                       0x00000001065b79bf 0x10658b000 + 182719
    13  org.python.python                       0x000000010659a6c6 PyObject_Call + 97
    14  org.python.python                       0x00000001065a8018 PyEval_CallObjectWithKeywords + 177
    15  org.python.python                       0x00000001065ba46e PyCodec_Encode + 78
    16  org.python.python                       0x0000000106633978 PyUnicodeUCS2_AsEncodedString + 141
    17  org.python.python                       0x00000001065c232f 0x10658b000 + 226095
    18  org.python.python                       0x00000001065c0c91 0x10658b000 + 220305
    19  org.python.python                       0x00000001065bfc43 0x10658b000 + 216131
    20  org.python.python                       0x00000001065bff0d PyArg_ParseTuple + 143
    21  _socket.so                              0x0000000106b2c7f3 0x106b28000 + 18419
    22  _socket.so                              0x0000000106b2b743 0x106b28000 + 14147
    23  org.python.python                       0x00000001065a2f72 PyEval_EvalFrameEx + 3557
    24  org.python.python                       0x00000001065a2147 PyEval_EvalCodeEx + 1934
    25  org.python.python                       0x00000001065dbd7a 0x10658b000 + 331130
    26  org.python.python                       0x000000010659a6c6 PyObject_Call + 97
    27  _functools.so                           0x00000001068d34a2 0x1068d2000 + 5282
    28  org.python.python                       0x000000010659a6c6 PyObject_Call + 97
    29  org.python.python                       0x00000001065a478d PyEval_EvalFrameEx + 9728
    30  org.python.python                       0x00000001065a2147 PyEval_EvalCodeEx + 1934
    31  org.python.python                       0x00000001065a88df 0x10658b000 + 121055
    32  org.python.python                       0x00000001065a463a PyEval_EvalFrameEx + 9389
    33  org.python.python                       0x00000001065a2147 PyEval_EvalCodeEx + 1934
    34  org.python.python                       0x00000001065a88df 0x10658b000 + 121055
    35  org.python.python                       0x00000001065a463a PyEval_EvalFrameEx + 9389
    36  org.python.python                       0x00000001065a8869 0x10658b000 + 120937
    37  org.python.python                       0x00000001065a463a PyEval_EvalFrameEx + 9389
    38  org.python.python                       0x00000001065a2147 PyEval_EvalCodeEx + 1934
    39  org.python.python                       0x00000001065a19b3 PyEval_EvalCode + 54
    40  org.python.python                       0x00000001065ddc70 0x10658b000 + 339056
    41  org.python.python                       0x00000001065ddd3c PyRun_FileExFlags + 165
    42  org.python.python                       0x00000001065dd726 PyRun_SimpleFileExFlags + 410
    43  org.python.python                       0x0000000106601e27 Py_Main + 2715
    44  libdyld.dylib                           0x00007fff8fe447e1 start + 1
    Thread 1:: Dispatch queue: com.apple.libsystem_network
    0   libsystem_c.dylib                       0x00007fff87fb32dd tiny_malloc_from_free_list + 453
    1   libsystem_c.dylib                       0x00007fff87fb3ad8 szone_malloc_should_clear + 971
    2   libsystem_c.dylib                       0x00007fff87fa6153 malloc_zone_malloc + 71
    3   libsystem_c.dylib                       0x00007fff87fa6ba7 malloc + 41
    4   libsystem_c.dylib                       0x00007fff8801026d tre_make_trans + 412
    5   libsystem_c.dylib                       0x00007fff8800ff59 tre_ast_to_tnfa + 145
    6   libsystem_c.dylib                       0x00007fff8800ff2f tre_ast_to_tnfa + 103
    7   libsystem_c.dylib                       0x00007fff8800e30b tre_compile + 4627
    8   libsystem_c.dylib                       0x00007fff8800c79f regncomp_l + 346
    9   libsystem_c.dylib                       0x00007fff87f9b278 __asl_parse_time_block_invoke_0 + 151
    10  libdispatch.dylib                       0x00007fff8a6ce0b6 _dispatch_client_callout + 8
    11  libdispatch.dylib                       0x00007fff8a6ce041 dispatch_once_f + 50
    12  libsystem_c.dylib                       0x00007fff87f9ad57 asl_parse_time + 61
    13  libsystem_c.dylib                       0x00007fff87fa139a _asl_time_string + 72
    14  libsystem_c.dylib                       0x00007fff87fa130e asl_msg_to_string_raw + 322
    15  libsystem_c.dylib                       0x00007fff87f99c77 _asl_send_message + 1273
    16  libsystem_c.dylib                       0x00007fff87f99412 _asl_lib_vlog + 513
    17  libsystem_c.dylib                       0x00007fff87f86839 vsyslog + 107
    18  libdispatch.dylib                       0x00007fff8a6d3cd1 _dispatch_log + 224
    19  libdispatch.dylib                       0x00007fff8a6cfba0 _dispatch_update_kq + 430
    20  libdispatch.dylib                       0x00007fff8a6cf9ee _dispatch_mgr_wakeup + 16
    21  libdispatch.dylib                       0x00007fff8a6cee65 _dispatch_wakeup + 28
    22  libdispatch.dylib                       0x00007fff8a6cee10 _dispatch_queue_push_list_slow2 + 33
    23  libdispatch.dylib                       0x00007fff8a6ceecd _dispatch_wakeup + 132
    24  libdispatch.dylib                       0x00007fff8a6cf027 _dispatch_resume_slow + 17
    25  libxpc.dylib                            0x00007fff8ea12ff2 _xpc_connection_listen_for_reply + 198
    26  libxpc.dylib                            0x00007fff8ea13ccf xpc_connection_send_message_with_reply + 122
    27  libsystem_network.dylib                 0x00007fff9163bd8c __net_helper_get_settings_block_invoke_0 + 181
    28  libdispatch.dylib                       0x00007fff8a6d1f01 _dispatch_call_block_and_release + 15
    29  libdispatch.dylib                       0x00007fff8a6ce0b6 _dispatch_client_callout + 8
    30  libdispatch.dylib                       0x00007fff8a6cf47f _dispatch_queue_drain + 235
    31  libdispatch.dylib                       0x00007fff8a6cf2f1 _dispatch_queue_invoke + 52
    32  libdispatch.dylib                       0x00007fff8a6cf1c3 _dispatch_worker_thread2 + 249
    33  libsystem_c.dylib                       0x00007fff87f8fcab _pthread_wqthread + 404
    34  libsystem_c.dylib                       0x00007fff87f7a171 start_wqthread + 13
    Thread 2:
    0   libsystem_kernel.dylib                  0x00007fff85af06d6 __workq_kernreturn + 10
    1   libsystem_c.dylib                       0x00007fff87f8feec _pthread_workq_return + 25
    2   libsystem_c.dylib                       0x00007fff87f8fcb3 _pthread_wqthread + 412
    3   libsystem_c.dylib                       0x00007fff87f7a171 start_wqthread + 13
    Thread 0 crashed with X86 Thread State (64-bit):
      rax: 0x00000000000fffe0  rbx: 0x00000000000009ac  rcx: 0x00007faa1b000000  rdx: 0x00007faa1b09ad80
      rdi: 0x0000000106585000  rsi: 0x00000001066fea00  rbp: 0x00007fff5967ced0  rsp: 0x00007fff5967cec8
       r8: 0x000000000000003f   r9: 0x000007faa1b09ad8  r10: 0x00007faa1b0b6300  r11: 0x000000000000fffe
      r12: 0x0000000000000002  r13: 0x00007faa1b09ad60  r14: 0x00000000066efffe  r15: 0x00000001066fea00
      rip: 0x00007fff87fafde1  rfl: 0x0000000000010202  cr2: 0x00007faa1b19ad5e
    Logical CPU: 0
    Binary Images:
           0x106581000 -        0x106581fff  org.python.python (2.7.2 - 2.7.2) <A3CE5618-7FE0-3307-B2C1-DE2661C936B2> /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/C ontents/MacOS/Python
           0x10658b000 -        0x106698fff  org.python.python (2.7.2 - 2.7.2) <B2E5B3C9-2D7C-37D7-B23D-84DEF8DDAF28> /System/Library/Frameworks/Python.framework/Versions/2.7/Python
           0x10689b000 -        0x10689efff  operator.so (60.3) <16E539EB-683E-3BDF-83AA-77ED26146560> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/operator.so
           0x1068d2000 -        0x1068d3fff  _functools.so (60.3) <610F4A5F-CEE5-3353-94CD-F586D4F2DAD0> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/_functools.so
           0x1068d7000 -        0x1068d8fff  _locale.so (60.3) <D7B03EB6-5126-3306-8699-D3816B044AAB> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/_locale.so
           0x1068dc000 -        0x1068ddfff  time.so (60.3) <B81E8A2D-38E3-3BA7-AA2F-7A543F20DACF> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/time.so
           0x106924000 -        0x106926fff  select.so (60.3) <191F03CF-4038-38AF-A0BA-22AC770298A0> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/select.so
           0x10692c000 -        0x10692dfff  fcntl.so (60.3) <5E2DBA68-27EB-3589-B7B4-8B7918DC9716> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/fcntl.so
           0x106931000 -        0x106934fff  _struct.so (60.3) <2D1A807F-2084-3CEE-9E4B-DE124502AB69> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/_struct.so
           0x10693a000 -        0x10693cfff  binascii.so (60.3) <A96BD9F2-1025-3803-A942-AC8AE48243A9> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/binascii.so
           0x106940000 -        0x106941fff  cStringIO.so (60.3) <F4174A1F-B66E-3986-985C-0632FCD266F9> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/cStringIO.so
           0x106946000 -        0x106949fff  _collections.so (60.3) <20EAC750-00E1-3216-BB1F-472C0CEA6118> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/_collections.so
           0x10698f000 -        0x106995fff  itertools.so (60.3) <C273B16D-A69E-3D3C-B3F5-43F6B0BC333F> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/itertools.so
           0x10699e000 -        0x10699efff  _bisect.so (60.3) <BEAA36C6-86EF-3272-9F95-29AED2B60109> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/_bisect.so
           0x1069a2000 -        0x1069a3fff  _heapq.so (60.3) <C02D109C-B83B-385E-86E9-04F551749448> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/_heapq.so
           0x1069a8000 -        0x1069b3ff7  datetime.so (60.3) <B359E7F5-D6D1-343C-A770-F1186D123691> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/datetime.so
           0x1069bc000 -        0x1069c5fff  _sqlite3.so (60.3) <C0006BFF-3590-3B8E-A9B5-DECD4A764236> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/_sqlite3.so
           0x106acf000 -        0x106ad3fff  math.so (60.3) <15868E58-734E-3A35-A4C2-AC4625F37902> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/math.so
           0x106b19000 -        0x106b1afff  _hashlib.so (60.3) <9B8C96E2-6DE6-3830-B300-35C790DA40C7> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/_hashlib.so
           0x106b1f000 -        0x106b22fff  strop.so (60.3) <33FECDE8-3D85-37A8-95CA-08C1F2B820D4> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/strop.so
           0x106b28000 -        0x106b2eff7  _socket.so (60.3) <E186283B-C7D4-3D7E-9198-CD7761B70100> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/_socket.so
           0x106b36000 -        0x106b39fff  _ssl.so (60.3) <2AEDA15A-56F4-3E82-9415-297BFE6C8F38> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/_ssl.so
           0x106b7f000 -        0x106b7ffff  _scproxy.so (60.3) <43CCA6F3-BA7C-3186-8450-B63D00D8AC6F> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/_scproxy.so
           0x106bc4000 -        0x106bc8fff  array.so (60.3) <56A0FB1F-7603-3450-AF31-9801D9AB95D5> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/array.so
           0x106bce000 -        0x106bcffff  _random.so (60.3) <E2D3E74F-9797-30D4-A9B7-E9FE72564C50> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/_random.so
           0x106bd3000 -        0x106bdffff  cPickle.so (60.3) <869D9434-2C00-3EC8-93A1-2A8104957B7E> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/cPickle.so
           0x106c25000 -        0x106c29fff  _json.so (60.3) <5899CF83-4D57-34C0-A01F-DC215C5C26D0> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/_json.so
           0x106cae000 -        0x106cbffff  _io.so (60.3) <79CDBE7E-1D18-39A6-99AA-CA9466FAD6C2> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/_io.so
           0x106d4e000 -        0x106d4efff  grp.so (60.3) <F1C42F13-D323-3F5A-B59E-ACB09DD18ABE> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/grp.so
           0x106fd2000 -        0x106fd4fff  zlib.so (60.3) <987E51DB-7827-3F1A-AD5E-CF58C673E644> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/zlib.so
           0x106fd9000 -        0x106fdffff  pyexpat.so (60.3) <72D45F21-63F8-3EEF-B71D-DC73B0309D55> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/pyexpat.so
           0x107066000 -        0x107077fff  _ctypes.so (60.3) <A4E934BA-B8B3-3CD6-9AA6-78458DEAA491> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/_ctypes.so
           0x10740e000 -        0x1074b2ff7  unicodedata.so (60.3) <D2954B53-CE7D-3182-8056-F04F7CAABC6C> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynl oad/unicodedata.so
        0x7fff66181000 -     0x7fff661b593f  dyld (210.2.3) <A40597AA-5529-3337-8C09-D8A014EB1578> /usr/lib/dyld
        0x7fff84fa3000 -     0x7fff8518cfff  com.apple.CoreFoundation (6.8 - 744.12) <EF002794-DAEF-31C6-866C-E3E3AC387A9F> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
        0x7fff851b6000 -     0x7fff853b6fff  libicucore.A.dylib (491.11.1) <CC318A27-878A-38CE-9292-1B98353FA9C7> /usr/lib/libicucore.A.dylib
        0x7fff85724000 -     0x7fff85729fff  libcompiler_rt.dylib (30) <08F8731D-5961-39F1-AD00-4590321D24A9> /usr/lib/system/libcompiler_rt.dylib
        0x7fff85ade000 -     0x7fff85af9ff7  libsystem_kernel.dylib (2050.18.24) <C0535565-35D1-31A7-A744-63D9F10F12A4> /usr/lib/system/libsystem_kernel.dylib
        0x7fff85dc3000 -     0x7fff85dcefff  libsystem_notify.dylib (98.5) <C49275CC-835A-3207-AFBA-8C01374927B6> /usr/lib/system/libsystem_notify.dylib
        0x7fff861ed000 -     0x7fff861eeff7  libSystem.B.dylib (169.3) <365477AB-D641-389D-B8F4-A1FAE9657EEE> /usr/lib/libSystem.B.dylib
        0x7fff86617000 -     0x7fff86625fff  libcommonCrypto.dylib (60026) <2D6537F5-1B5E-305C-A1CF-D1FA80CA3939> /usr/lib/system/libcommonCrypto.dylib
        0x7fff87f30000 -     0x7fff87f38fff  liblaunch.dylib (442.26.2) <2F71CAF8-6524-329E-AC56-C506658B4C0C> /usr/lib/system/liblaunch.dylib
        0x7fff87f79000 -     0x7fff88045fe7  libsystem_c.dylib (825.25) <8CBCF9B9-EBB7-365E-A3FF-2F3850763C6B> /usr/lib/system/libsystem_c.dylib
        0x7fff88046000 -     0x7fff88058ff7  libz.1.dylib (43) <2A1551E8-A272-3DE5-B692-955974FE1416> /usr/lib/libz.1.dylib
        0x7fff88134000 -     0x7fff88159ff7  libc++abi.dylib (24.4) <E7BD9363-1D25-3551-A68A-2E2FF6ABECD7> /usr/lib/libc++abi.dylib
        0x7fff88221000 -     0x7fff88272ff7  com.apple.SystemConfiguration (1.12.2 - 1.12.2) <E095637C-457F-3D8F-AE32-A032F9D5A46C> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfi guration
        0x7fff8835f000 -     0x7fff8838dff7  libsystem_m.dylib (3022.6) <B434BE5C-25AB-3EBD-BAA7-5304B34E3441> /usr/lib/system/libsystem_m.dylib
        0x7fff89823000 -     0x7fff8982bff7  libsystem_dnssd.dylib (379.32.1) <62AA0B84-188A-348B-8F9E-3E2DB08DB93C> /usr/lib/system/libsystem_dnssd.dylib
        0x7fff89f9d000 -     0x7fff8a09afff  libsqlite3.dylib (138.1) <ADE9CB98-D77D-300C-A32A-556B7440769F> /usr/lib/libsqlite3.dylib
        0x7fff8a6cc000 -     0x7fff8a6e1ff7  libdispatch.dylib (228.23) <D26996BF-FC57-39EB-8829-F63585561E09> /usr/lib/system/libdispatch.dylib
        0x7fff8a704000 -     0x7fff8a750ff7  libauto.dylib (185.1) <73CDC482-16E3-3FC7-9BB4-FBA2DA44DBC2> /usr/lib/libauto.dylib
        0x7fff8ac23000 -     0x7fff8ac24fff  libsystem_blocks.dylib (59) <D92DCBC3-541C-37BD-AADE-ACC75A0C59C8> /usr/lib/system/libsystem_blocks.dylib
        0x7fff8acf1000 -     0x7fff8adf3fff  libcrypto.0.9.8.dylib (47) <74F165AD-4572-3B26-B0E2-A97477FE59D0> /usr/lib/libcrypto.0.9.8.dylib
        0x7fff8aeea000 -     0x7fff8b00292f  libobjc.A.dylib (532.2) <90D31928-F48D-3E37-874F-220A51FD9E37> /usr/lib/libobjc.A.dylib
        0x7fff8b070000 -     0x7fff8b072fff  com.apple.TrustEvaluationAgent (2.0 - 23) <A97D348B-32BF-3E52-8DF2-59BFAD21E1A3> /System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/Tru stEvaluationAgent
        0x7fff8b112000 -     0x7fff8b113ff7  libsystem_sandbox.dylib (220) <3C3B03CF-C525-3CB3-8557-62E91B93AC95> /usr/lib/system/libsystem_sandbox.dylib
        0x7fff8ba1a000 -     0x7fff8ba1bff7  libdnsinfo.dylib (453.18) <E7595861-ECF9-336E-9901-BED2620FAA80> /usr/lib/system/libdnsinfo.dylib
        0x7fff8bbfa000 -     0x7fff8bc62ff7  libc++.1.dylib (65.1) <20E31B90-19B9-3C2A-A9EB-474E08F9FE05> /usr/lib/libc++.1.dylib
        0x7fff8c0fb000 -     0x7fff8c132ff7  libssl.0.9.8.dylib (47) <923945E6-C489-3406-903B-A362410753F8> /usr/lib/libssl.0.9.8.dylib
        0x7fff8cd20000 -     0x7fff8cd56fff  libsystem_info.dylib (406.17) <4FFCA242-7F04-365F-87A6-D4EFB89503C1> /usr/lib/system/libsystem_info.dylib
        0x7fff8d244000 -     0x7fff8d249fff  libcache.dylib (57) <65187C6E-3FBF-3EB8-A1AA-389445E2984D> /usr/lib/system/libcache.dylib
        0x7fff8ea07000 -     0x7fff8ea29ff7  libxpc.dylib (140.41) <FAC04D8B-680E-325F-8F0C-DD69859D0E01> /usr/lib/system/libxpc.dylib
        0x7fff8eadd000 -     0x7fff8eb2cff7  libcorecrypto.dylib (106.2) <CE0C29A3-C420-339B-ADAA-52F4683233CC> /usr/lib/system/libcorecrypto.dylib
        0x7fff8eb55000 -     0x7fff8eb57fff  libquarantine.dylib (52) <4BE2E642-A14F-340A-B482-5BD2AEFD9C24> /usr/lib/system/libquarantine.dylib
        0x7fff8f0ec000 -     0x7fff8f0f2fff  libmacho.dylib (829) <BF332AD9-E89F-387E-92A4-6E1AB74BD4D9> /usr/lib/system/libmacho.dylib
        0x7fff8fe42000 -     0x7fff8fe45ff7  libdyld.dylib (210.2.3) <F59367C9-C110-382B-A695-9035A6DD387E> /usr/lib/system/libdyld.dylib
        0x7fff8fe93000 -     0x7fff8fe95ff7  libunc.dylib (25) <92805328-CD36-34FF-9436-571AB0485072> /usr/lib/system/libunc.dylib
        0x7fff8fe96000 -     0x7fff8fe9dfff  libcopyfile.dylib (89) <876573D0-E907-3566-A108-577EAD1B6182> /usr/lib/system/libcopyfile.dylib
        0x7fff9022f000 -     0x7fff90230fff  libffi.dylib (18) <D20FE81C-271C-3446-ABC8-50B6A6F5BEA4> /usr/lib/libffi.dylib
        0x7fff904f0000 -     0x7fff9050bff7  libexpat.1.dylib (12) <95D59F1F-0A5C-3F33-BA97-26F7D796CE7A> /usr/lib/libexpat.1.dylib
        0x7fff908e2000 -     0x7fff908e3fff  libDiagnosticMessagesClient.dylib (8) <8548E0DC-0D2F-30B6-B045-FE8A038E76D8> /usr/lib/libDiagnosticMessagesClient.dylib
        0x7fff90c13000 -     0x7fff90c14ff7  libremovefile.dylib (23.1) <DBBFAF35-AC78-3856-92F6-6E4FD9DF14A2> /usr/lib/system/libremovefile.dylib
        0x7fff912c0000 -     0x7fff912c6ff7  libunwind.dylib (35.1) <21703D36-2DAB-3D8B-8442-EAAB23C060D3> /usr/lib/system/libunwind.dylib
        0x7fff91562000 -     0x7fff915cbfff  libstdc++.6.dylib (56) <EAA2B53E-EADE-39CF-A0EF-FB9D4940672A> /usr/lib/libstdc++.6.dylib
        0x7fff915cc000 -     0x7fff915ccfff  libkeymgr.dylib (25) <CC9E3394-BE16-397F-926B-E579B60EE429> /usr/lib/system/libkeymgr.dylib
        0x7fff91635000 -     0x7fff91643ff7  libsystem_network.dylib (77.10) <0D99F24E-56FE-380F-B81B-4A4C630EE587> /usr/lib/system/libsystem_network.dylib
    External Modification Summary:
      Calls made by other processes targeting this process:
        task_for_pid: 0
        thread_create: 0
        thread_set_state: 0
      Calls made by this process:
        task_for_pid: 0
        thread_create: 0
        thread_set_state: 0
      Calls made by all processes on this machine:
        task_for_pid: 5843
        thread_create: 1
        thread_set_state: 0
    VM Region Summary:
    ReadOnly portion of Libraries: Total=67.5M resident=24.5M(36%) swapped_out_or_unallocated=43.0M(64%)
    Writable regions: Total=66.6M written=11.4M(17%) resident=19.8M(30%) swapped_out=0K(0%) unallocated=46.8M(70%)
    REGION TYPE                      VIRTUAL
    ===========                      =======
    MALLOC                             55.5M
    MALLOC guard page                    32K
    STACK GUARD                        56.0M
    Stack                              10.6M
    VM_ALLOCATE                          20K
    __DATA                             1924K
    __LINKEDIT                         53.6M
    __TEXT                             13.9M
    __UNICODE                           544K
    shared memory                        12K
    ===========                      =======
    TOTAL                             192.0M
    Model: MacBookAir4,2, BootROM MBA41.0077.B0F, 2 processors, Intel Core i7, 1.8 GHz, 4 GB, SMC 1.73f65
    Graphics: Intel HD Graphics 3000, Intel HD Graphics 3000, Built-In, 384 MB
    Memory Module: BANK 0/DIMM0, 2 GB, DDR3, 1333 MHz, 0x80AD, 0x484D54333235533642465238432D48392020
    Memory Module: BANK 1/DIMM0, 2 GB, DDR3, 1333 MHz, 0x80AD, 0x484D54333235533642465238432D48392020
    AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0xE9), Broadcom BCM43xx 1.0 (5.106.98.81.22)
    Bluetooth: Version 4.0.9f33 10885, 2 service, 18 devices, 1 incoming serial ports
    Network Service: Wi-Fi, AirPort, en0
    Serial ATA Device: APPLE SSD SM256C, 251 GB
    USB Device: hub_device, 0x0424  (SMSC), 0x2513, 0xfd100000 / 2
    USB Device: Internal Memory Card Reader, apple_vendor_id, 0x8404, 0xfd110000 / 3
    USB Device: FaceTime Camera (Built-in), apple_vendor_id, 0x850a, 0xfa200000 / 3
    USB Device: hub_device, 0x0424  (SMSC), 0x2513, 0xfa100000 / 2
    USB Device: Apple Internal Keyboard / Trackpad, apple_vendor_id, 0x024c, 0xfa120000 / 5
    USB Device: BRCM20702 Hub, 0x0a5c  (Broadcom Corp.), 0x4500, 0xfa110000 / 4
    USB Device: Bluetooth USB Host Controller, apple_vendor_id, 0x821f, 0xfa113000 / 8

    I guess you could say Cheetah is in stable release since 2010 as that was when it was last updated. Python has changed considerably since then.
    Pypl.org shows a list of available packages by ascending Python version. By the time one looks for Cheetah support in Python 2.6, it is strictly Linux. In the Python 2.7 section, there is no Cheetah package listed at all.
    In my estimation, development on Cheetah has been abandoned, and it remains incompatible with Python 2.7.2 as installed on OS X. You should abandon Cheetah. Look at Jinja2, or Django.
    OS X still uses Python scripts for some system activity. If the system version of Python gets messed up with an incompatible module, these system python scripts are compromised too.
    Seriously, look at Pythonbrew. It allows you to create full-blown Python installs and switch between versions and virtual environments.

  • Using launchctl with python script

    I have been trying to get launchctl to run a python script for me every 3 minutes. I have read many threads and such to no avail. Following describes files and such.
    PLIST file location = /Users/mike/Library/LaunchAgents
    File name = scraper.plist
    File owner:group = mike:staff
    File contents =
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/Prope
    <plist version="1.0">
    <dict>
    <key>Label</key>
    <string>scraper</string>
    <key>OnDemand</key>
    <true/>
    <key>Program</key>
    <string>/Users/mike/scripts/python/backgroundscript/runscraper.sh</string>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/Users/mike/scripts/python/backgroundscript</string>
    <key>StartInterval</key>
    <integer>3</integer>
    </dict>
    </plist>
    SCRIPT INFO:
    Location = /Users/mike/scripts/python/backgroundscript/
    File name = runscraper.sh
    File Contents =
    #!/bin/sh
    say "hey mike"
    /usr/bin/python /Users/micahrye/scripts/python/backgroundscript/scraper.py
    File owner:group = mike:staff (fro scraper.py and runscraper.sh)
    File permissions = 755 (fro scraper.py and runscraper.sh)
    NOW about the script, I have the shell script runscraper.sh call the python script. All works from the cmd line, but does not work when launchctl calls it. I put the following in the runscraper script to make sure it was getting called:
    say "hey mike"
    So every time launchctl calls runscraper.sh I hear the "hey mike," so I know that launchctl is calling it, BUT it does not seem to call or launch the python!!!! AGAIN, if I run runscraper.sh from the cmd line I hear "hey mike" and the python script run with no problems.
    I have checked log files and found nothing.
    I have tried many things and nothing has worked, would enjoy someones wisdom
    thanks

    Post to the Unix forum under OS X Technologies.

  • Script for generating pacman html info

    Hi folks!
    I created a small python script for parsing pacman outputs and generate a html document
    Is under development and not very useful at the moment but I want to share my progress
    Output example: http://tulur.com/pkginfo/example.html
    (is in spanish because my locale conf, the output is in your language)
    http://tulur.com/archlinux-pkginfo
    I'm not a programmer, probably can be improved
    Last edited by bungow (2010-03-08 23:05:01)

    great work, dude.
    Thanks for sharing.

  • Fabric Path

    Does anyone have a deep-dive white paper on Fabric Path?
    All I can find on Cisco's website is an 8-page overview.
    Thanks

    Hi
    Please see the configuration guide for fabric path (Requires Cisco.com login)
    http://www.cisco.com/en/US/docs/switches/datacenter/sw/5_x/nx-os/fabricpath/configuration/guide/fp_cli_Book.html
    Thanks
    Hatim Badr

  • Script of recolor artwork for compound paths

    Hi,  there,
      I tried to write some script to recolor my art work.
      Basically I only have path and single colour compound path in my layer.
      For path its easy:
      if ( mypath.name == 'some name ') mypath.fillColor = myColor;
      while for compound path it's not that easy. Throughout my search, I didn't find some methods that can do something like this:
    myCompoundPath.fillColor = myColor;
      then I tried to simulate the procedure of that in the ui : select the compoundPath -> click "recolor artwork" -> change the colour.
      and there s still no such methods were found.
      I m wondering is there any way to do this?
      Thanks a lot.

    check this thread for a sample of how to do it
    Change color of compoundPathItems created by converting Text to Paths using createOutline()

  • Schedule a task on window 7 command line for running a Python script

    I have a Python script.
    1. if I directly run it on the command line: python pythonscript.py it is working.
    2. I want to run it every 30 minutes, I created a schtasks like this:
    2.1 schtasks /create /tn "myTask" /tr "C:\python27\python.exe Path_to_Python_Script" /sc minute /mo 30 /st 08:03
          the schtasks itself was created successfully and I think the task was run but I did not see any result come out.
    2.2 schtasks /create /tn "myTask" /tr "python pythonscript" /sc minute /mo 30 /st 08:03 (schtasks command is on the directory of pythonscript)
       the schtasks itself was created successfully and I think the task was run but I did not see any result come out.
    2.3 schtasks /create /tn "myTask" /tr "myscript.bat" /sc minute /mo 30 /st 08:03 (schtasks command is on the directory of pythonscript and myscript.bat and in the myscript.bat, I have one line code: python pythonscript)
       the schtasks itself was created successfully and I think the task was run but I did not see any result come out.
       How if I do: Cuurent directory>myscript.bat (then enter) OR myscript(then enter), it runs and get the result.
    Question: Why the task scheduled can not have result come out?
    Thanks.

    Hello,
    The Windows Desktop Perfmon and Diagnostic tools forum is to discuss performance monitor (perfmon), resource monitor (resmon), and task manager, focusing on HOW-TO, Errors/Problems, and usage scenarios.
    Since your post is off-topic, I am moving it to the
    off topic forum.
    Karl
    When you see answers and helpful posts, please click Vote As Helpful, Propose As Answer, and/or Mark As Answer.
    My Blog: Unlock PowerShell
    My Book:
    Windows PowerShell 2.0 Bible
    My E-mail: -join ('6F6C646B61726C406F75746C6F6F6B2E636F6D'-split'(?<=\G.{2})'|%{if($_){[char][int]"0x$_"}})

  • Include python script inside an app

    Hi all, I'm writing an applescript app which should use a python script.
    how can I include the script inside the apple and have it called by the applescript?
    Thank you!

    Now, is there a way to let the user choose both the output file directory and the output file name (out.iso)?
    To get the filename, add this after the code to select the directory:
    <pre style="
    font-family: Monaco, 'Courier New', Courier, monospace;
    font-size: 10px;
    font-weight: normal;
    margin: 0px;
    padding: 5px;
    border: 1px solid #000000;
    width: 720px;
    color: #000000;
    background-color: #E6E6EE;
    overflow: auto;">
    set outPutName to text returned of (display dialog "Now, please enter a filename:" default answer "out" with title "Enter Filename") & ".iso"</pre>
    But you need to remove "quoted form of the" from dirOutput.
    Also, "set dirOutput to POSIX path of the dirOut" is not needed.
    so, this should work:
    <pre style="
    font-family: Monaco, 'Courier New', Courier, monospace;
    font-size: 10px;
    font-weight: normal;
    margin: 0px;
    padding: 5px;
    border: 1px solid #000000;
    width: 720px;
    color: #000000;
    background-color: #E6E6EE;
    overflow: auto;">
    set dirOut to (POSIX path of (choose folder with prompt "Scegli la posizione in cui salvare il file convertito"))
    set outPutName to text returned of (display dialog "Now, please enter a filename:" default answer "out" with title "Enter Filename") & ".iso"
    if outPutName is ".iso" then set outPutName to "out.iso" -- simple error check for blank name
    if outPutName contains "/" then set outPutName to "out.iso" -- simple error check for bad charater in name
    set fullPathOut to quoted form of (dirOut & outPutName)
    </pre>
    Tony

  • Script for downloading(svn) and install E17

    I've been working on a script that download for the svn repository e17, compiler and install. I've made this script more as a to lear more about bash script. You can do the same thing as my script with yaourt. I hope someone might need it.
    #!/bin/bash
    # Title: Arch E17 svn #
    # Auther: Kamil MIklaszewski ([email protected]) #
    # Date: 2008-12-19 19:10 #
    # Licence: GPL #
    # This program is free software; you can redistribute it and/or modify #
    # it under the terms of the GNU General Public License as published by #
    # the Free Software Foundation; either version 2 of the License, or #
    # (at your option) any later version. #
    # This program is distributed in the hope that it will be useful, #
    # but WITHOUT ANY WARRANTY; without even the implied warranty of #
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
    # GNU General Public License for more details. #
    # You should have received a copy of the GNU General Public License #
    # along with this program; if not, write to the Free Software #
    # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, #
    # MA 02110-1301, USA. #
    # Version: 1.0 #
    # Description: This script was writen for Archlinux. It will download e17 #
    # from the svn repository and it will do a full installation. #
    # This script also take care of the dependency for all of the #
    # programs that are installed with e17. #
    # TODO: For version 1.0 #
    # -have the scipt use dialog #
    # -make the script more autamatic #
    # Change Log: *2008-12-19 #
    # -creation of script #
    # Function name: prep
    # Function paramiter(s): none
    # Function description: This function prepers the envirement to run
    # the rest of the script
    prep()
    #make a temporery directory and go to it
    mkdir -p ~/arch_e17_svn
    cd ~/arch_e17_svn
    #export this path to compile succesfuly
    export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig/
    # Function name: message
    # Function paramiter(s): Word to be printed on the screen
    # Function description: This function print messages on the screen.
    message()
    #print a message to the screen
    echo -e "==>" $*
    # Function name: downloadPackage
    # Function paramiter(s): none
    # Function description: This function go to the user's home
    # directory and downloads e17 from svn repo.
    downloadPackage()
    message "Downloading " $1 " from E17 svn repository."
    #download the specifed package with less text
    svn co --quiet http://svn.enlightenment.org/svn/e/trunk/$1 $1-svn
    # Function name: generalDependencys
    # Function paramiter(s): none
    # Function description: This fuction install the general
    # dependencys.
    generalDependencys()
    message "Installing Dependencys..."
    #list of package needed to be installed
    generalDependencysList=(
    'svn'
    'm4'
    'autoconf'
    'automake'
    'libtool'
    'pkgconfig'
    'texinfo'
    'zlib'
    'libpng'
    'libjpeg'
    'freetype2'
    'xorg'
    'dbus'
    'hal'
    'pam'
    'librsvg'
    'libnotify'
    'curl'
    'openssl'
    'libungif'
    'libtiff'
    'gettext'
    'glibc'
    'glibmm'
    'doxygen'
    'giflib'
    'cairo'
    'libx11'
    'libxext'
    'libxrender'
    'fontconfig'
    'libxcb'
    'sdl'
    'mesa'
    'qt'
    'librsvg'
    'libtiff'
    'directfb'
    #install the dependencys in the list
    sudo pacman -Sq --needed ${generalDependencysList[@]}
    # Function name: installPackage
    # Function paramiter(s): The name of the package to install
    # Function description: This fuction need one paramiter that is
    # the package to configure and install.
    installPackage()
    #change directory to the program to configure and install
    cd ~/arch_e17_svn/$1-svn
    message "Configurating package " $1
    #run the autogen script that will configure and
    #make read to install this program
    ./autogen.sh
    message "Compiling package " $1
    #now compile the source file of the program
    make
    message "Installing package " $1
    #now install the program
    sudo make install
    cleanUp()
    rm -r ~/arch_e17_svn
    # MAIN #
    main()
    #preper the envirement
    prep
    #install the general dependecys using pacman
    generalDependencys
    #list of packages to download and install
    packagesList=(
    'eina'
    'eet'
    'evas'
    'ecore'
    'efreet'
    'embryo'
    'edje'
    'e_dbus'
    'e'
    #loop that gos through the list and downloads the packages
    for package in ${packagesList[@]}
    do
    downloadPackage $package
    message "Done\n"
    done
    #loop that gos through the list and installs the packages
    for package in ${packagesList[@]}
    do
    installPackage $package
    message "Done\n"
    done
    main

    pressh wrote:to not duplicate work I've already created a python script some time ago which you can use to build e17 pacman packages using the community PKGBUILDs: http://dev.archlinux.org/~ronald/e17.html
    I may extend its usage if someone sees any use for it. Either way, just thought I should drop it here.
    is that script any different from a full build through makepkg/yaourt using AUR's Pkgbuilds?
    I tried to use it but i get a list of errors similar to
    cp: impossibile creare il file normale `eina-build/eina/.svn/prop-base/NEWS.svn-
    base': Permission denied
    but if i can use yaourt, why not?
    Edit: sorry, i looked at the python source and realized that it actually just syncs abs and then runs makepkg and namcap for each package. so i guess i'll use yaourt instead (or try to understand why makepkg exits with that error)
    Last edited by pikiweb (2009-06-19 08:48:46)

  • Python Script to Generate MySQL Stored Routines

    Here is a quick Python script that reads a MySQL scheme (database) and for each table, it generates Insert, Update, Get and Delete stored routines.  The script is just a "quick-n-dirty" script, but it does take into account that the Update, Get and Delete routines need to key off the primary key (and if there's not one, there could be trouble!).  Each stored routine is output into a separate file.
    I'm attaching the script so you professional Python people can tell me where I could improve the script with respect to simplicity, readability, cleanliness, etc.
    I have NOT yet got the command line parameters added to this script, but plan to soon.
    #!/usr/bin/env python
    # spgen.py
    # Copyright 2008 Matt Runion <[email protected]>
    import sys
    import MySQLdb
    # The INSERT template
    insertTemplate = """
    DELIMITER $$
    DROP PROCEDURE IF EXISTS `%s`$$
    CREATE PROCEDURE `%s` (%s)
    BEGIN
    INSERT INTO %s (
    %s
    ) VALUES (
    %s
    END$$
    DELIMITER ;
    # The UPDATE template
    updateTemplate = """
    DELIMITER $$
    DROP PROCEDURE IF EXISTS `%s`$$
    CREATE PROCEDURE `%s` (%s)
    BEGIN
    UPDATE %s SET
    %s
    WHERE
    %s;
    END$$
    DELIMITER ;
    # The GET template
    getTemplate = """
    DELIMITER $$
    DROP PROCEDURE IF EXISTS `%s`$$
    CREATE PROCEDURE `%s` (%s)
    BEGIN
    SELECT
    %s
    FROM %s
    WHERE
    %s;
    END$$
    DELIMITER ;
    # The DELETE template
    deleteTemplate = """
    DELIMITER $$
    DROP PROCEDURE IF EXISTS `%s`$$
    CREATE PROCEDURE `%s` (%s)
    BEGIN
    DELETE FROM %s
    WHERE
    %s;
    END$$
    DELIMITER ;
    def generateSPs(dbhost, dbname, dbuser, dbpasswd):
    This method reads all the tables from the database and for each of them
    generates the following stored routines:
    <TableName>_Insert
    <TableName>_Update
    <TableName>_Get
    <TableName>_Delete
    # Open the database connection
    print 'Connecting to database [%s] on host [%s]' % (dbname, dbhost)
    dbConn = MySQLdb.connect(host=dbhost, user=dbuser, passwd=dbpasswd, db=dbname)
    cur = dbConn.cursor()
    # Get a list of all tables in the database
    print 'Reading tables...'
    cur.execute("SHOW TABLES FROM %s" % dbname)
    tables = cur.fetchall()
    for table in tables:
    print 'Generating stored procs for table [%s]...' % table[0]
    # Get a list of a columns in the current table
    cur.execute("SHOW COLUMNS FROM %s" % table[0])
    columns = cur.fetchall()
    insertUpdateParms = ''
    getDeleteParms = ''
    whereClause = ''
    insertList = ''
    valuesList = ''
    updateList = ''
    for column in columns:
    # Reset some variables
    print ' %s -- %s [%s, %s, %s]' % (column[0], column[1], column[2], column[3], column[4])
    # Append the columns to the input parms
    if (len(insertUpdateParms) > 0):
    insertUpdateParms += ',\n'
    insertList += ',\n'
    valuesList += ',\n'
    if (len(updateList) > 0):
    updateList += ',\n'
    insertUpdateParms += '%sIN ' % column[0]
    if ((column[1][0:3].lower() == 'var') or (column[1][0:3].lower() == 'cha')):
    insertUpdateParms += '%s' % column[1]
    elif (column[1][0:3].lower() == 'enu'):
    insertUpdateParms += 'varchar(50)'
    else:
    insertUpdateParms += (column[1].split('('))[0]
    insertList += column[0]
    valuesList += '%sIN' % column[0]
    # Generate the key parms that are used for the Get and Delete
    # stored procs, and generate the values for the WHERE clause
    # for the Update, Get and Delete stored procs
    if (column[3].lower() == 'pri'):
    if (len(getDeleteParms) > 0):
    getDeleteParms += ',\n'
    getDeleteParms += '%sIN ' % column[0]
    if (column[1][0:3].lower() == 'var'):
    getDeleteParms += '%s' % column[1]
    else:
    getDeleteParms += (column[1].split('('))[0]
    if (len(whereClause) > 0):
    whereClause += ' AND \n'
    whereClause += '%s = %sIN' % (column[0], column[0])
    else:
    updateList += '%s = %sIN' % (column[0], column[0])
    #print '---'
    #print insertUpdateParms
    #print '---'
    #print getDeleteParms
    #print '---'
    #print whereClause
    #print 'INSERT:'
    #print insertTemplate % (table[0] + '_Insert', table[0] + '_Insert', insertUpdateParms, table[0], insertList, valuesList)
    #print 'UPDATE:'
    #print updateTemplate % (table[0] + '_Update', table[0] + '_Update', insertUpdateParms, table[0], updateList, whereClause)
    #print 'GET:'
    #print getTemplate % (table[0] + '_Get', table[0] + '_Get', getDeleteParms, insertList, table[0], whereClause)
    #print 'DELETE:'
    #print deleteTemplate % (table[0] + '_Delete', table[0] + '_Delete', getDeleteParms, table[0], whereClause)
    # Write out the INSERT stored proc
    file = open('./test/' + table[0] + '_Insert', 'w')
    file.write(insertTemplate % (table[0] + '_Insert', table[0] + '_Insert', insertUpdateParms, table[0], insertList, valuesList))
    file.close()
    # Write out the UPDATE stored proc
    file = open('./test/' + table[0] + '_Update', 'w')
    file.write(updateTemplate % (table[0] + '_Update', table[0] + '_Update', insertUpdateParms, table[0], updateList, whereClause))
    file.close()
    # Write out the GET stored proc
    file = open('./test/' + table[0] + '_Get', 'w')
    file.write(getTemplate % (table[0] + '_Get', table[0] + '_Get', getDeleteParms, insertList, table[0], whereClause))
    file.close()
    # Write out the DELETE stored proc
    file = open('./test/' + table[0] + '_Delete', 'w')
    file.write(deleteTemplate % (table[0] + '_Delete', table[0] + '_Delete', getDeleteParms, table[0], whereClause))
    file.close()
    return 0
    if __name__ == '__main__':
    generateSPs('<SERVER>', '<DATABASE>', '<USER>', '<PASSWD>')

    I found and fixed a bug with some misplaced parenthesis that forced the path to be made all lower-case.  This was a bad thing if the path had some upper case letters in it!
    #!/usr/bin/env python
    # spgen.py
    # Copyright 2008 Matt Runion <[email protected]>
    # This program is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation; either version 2 of the License, or
    # (at your option) any later version.
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    # GNU General Public License for more details.
    # You should have received a copy of the GNU General Public License
    # along with this program; if not, write to the Free Software
    # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
    # MA 02110-1301, USA.
    import sys
    import getopt
    import os
    import MySQLdb
    # The INSERT template
    insertTemplate = """
    DELIMITER $$
    DROP PROCEDURE IF EXISTS `%s`$$
    CREATE PROCEDURE `%s` (%s)
    BEGIN
    INSERT INTO %s (
    %s
    ) VALUES (
    %s
    END$$
    DELIMITER ;
    # The UPDATE template
    updateTemplate = """
    DELIMITER $$
    DROP PROCEDURE IF EXISTS `%s`$$
    CREATE PROCEDURE `%s` (%s)
    BEGIN
    UPDATE %s SET
    %s
    WHERE
    %s;
    END$$
    DELIMITER ;
    # The GET template
    getTemplate = """
    DELIMITER $$
    DROP PROCEDURE IF EXISTS `%s`$$
    CREATE PROCEDURE `%s` (%s)
    BEGIN
    SELECT
    %s
    FROM %s
    WHERE
    %s;
    END$$
    DELIMITER ;
    # The DELETE template
    deleteTemplate = """
    DELIMITER $$
    DROP PROCEDURE IF EXISTS `%s`$$
    CREATE PROCEDURE `%s` (%s)
    BEGIN
    DELETE FROM %s
    WHERE
    %s;
    END$$
    DELIMITER ;
    def generateSPs(dbhost, dbname, dbuser, dbpasswd, outPath):
    This method reads all the tables from the database and for each of them
    generates the following stored routines:
    <TableName>_Insert
    <TableName>_Update
    <TableName>_Get
    <TableName>_Delete
    # Open the database connection
    print 'Connecting to database [%s] on host [%s]' % (dbname, dbhost)
    dbConn = MySQLdb.connect(host=dbhost, user=dbuser, passwd=dbpasswd, db=dbname)
    cur = dbConn.cursor()
    # Get a list of all tables in the database
    print 'Reading tables...'
    cur.execute("SHOW TABLES FROM %s" % dbname)
    tables = cur.fetchall()
    for table in tables:
    print 'Generating stored procs for table [%s]...' % table[0]
    # Get a list of a columns in the current table
    cur.execute("SHOW COLUMNS FROM %s" % table[0])
    columns = cur.fetchall()
    insertUpdateParms = ''
    getDeleteParms = ''
    whereClause = ''
    insertList = ''
    valuesList = ''
    updateList = ''
    for column in columns:
    # Reset some variables
    print ' %s -- %s [%s, %s, %s]' % (column[0], column[1], column[2], column[3], column[4])
    # Append the columns to the input parms
    if (len(insertUpdateParms) > 0):
    insertUpdateParms += ',\n'
    insertList += ',\n'
    valuesList += ',\n'
    if (len(updateList) > 0):
    updateList += ',\n'
    insertUpdateParms += '%sIN ' % column[0]
    if ((column[1][0:3].lower() == 'var') or (column[1][0:3].lower() == 'cha')):
    insertUpdateParms += '%s' % column[1]
    elif (column[1][0:3].lower() == 'enu'):
    insertUpdateParms += 'varchar(50)'
    else:
    insertUpdateParms += (column[1].split('('))[0]
    insertList += column[0]
    valuesList += '%sIN' % column[0]
    # Generate the key parms that are used for the Get and Delete
    # stored procs, and generate the values for the WHERE clause
    # for the Update, Get and Delete stored procs
    if (column[3].lower() == 'pri'):
    if (len(getDeleteParms) > 0):
    getDeleteParms += ',\n'
    getDeleteParms += '%sIN ' % column[0]
    if (column[1][0:3].lower() == 'var'):
    getDeleteParms += '%s' % column[1]
    else:
    getDeleteParms += (column[1].split('('))[0]
    if (len(whereClause) > 0):
    whereClause += ' AND \n'
    whereClause += '%s = %sIN' % (column[0], column[0])
    else:
    updateList += '%s = %sIN' % (column[0], column[0])
    # Write out the INSERT stored proc
    file = open(os.path.join(outPath,(table[0] + '_Insert.sql').lower()), 'w')
    file.write(insertTemplate % (table[0] + '_Insert', table[0] + '_Insert', insertUpdateParms, table[0], insertList, valuesList))
    file.close()
    # Write out the UPDATE stored proc
    file = open(os.path.join(outPath,(table[0] + '_Update.sql').lower()), 'w')
    file.write(updateTemplate % (table[0] + '_Update', table[0] + '_Update', insertUpdateParms, table[0], updateList, whereClause))
    file.close()
    # Write out the GET stored proc
    file = open(os.path.join(outPath,(table[0] + '_Get.sql').lower()), 'w')
    file.write(getTemplate % (table[0] + '_Get', table[0] + '_Get', getDeleteParms, insertList, table[0], whereClause))
    file.close()
    # Write out the DELETE stored proc
    file = open(os.path.join(outPath,(table[0] + '_Delete.sql').lower()), 'w')
    file.write(deleteTemplate % (table[0] + '_Delete', table[0] + '_Delete', getDeleteParms, table[0], whereClause))
    file.close()
    return 0
    def main(argv):
    SPGen reads all the tables from the given database and for each of
    those tables generates the following stored routines:
    <TableName>_Insert
    <TableName>_Update
    <TableName>_Get
    <TableName>_Delete
    Command line arguments are:
    -?, --help: Help
    -o, --outputpath: File output path
    -h, --host: Database host/server
    -d, --database: Database name
    -u, --user: Database user
    -p, --password Database password
    # Set defaults...
    outputPath = os.getcwd()
    host = 'localhost'
    database = ''
    user = ''
    password = ''
    # See what command line options we have
    try:
    opts, args = getopt.getopt(argv[1:], '?o:h:d:u:p:', ['help', 'outputpath=', 'host=', 'database=', 'user=', 'password='])
    except getopt.GetoptError:
    print main.__doc__
    sys.exit(2)
    for opt, arg in opts:
    if opt in ['-?', '--help']:
    print main.__doc__
    sys.exit()
    elif opt in ['-o', '--outputpath']:
    outputPath = arg
    elif opt in ['-h', '--host']:
    host = arg
    elif opt in ['-d', '--database']:
    database = arg
    elif opt in ['-u', '--user']:
    user = arg
    elif opt in ['-p', '--password']:
    password = arg
    generateSPs(dbhost=host, dbname=database, dbuser=user, dbpasswd=password, outPath=outputPath)
    if __name__ == '__main__':
    main(sys.argv)
    Last edited by mrunion (2008-11-20 19:33:37)

  • How to run a Python Script in Terminal ?

    Hello,
    how can you run a Python Script in Terminal ? (OS X 10.4.5 - not OS X Server)
    It´s about this Sript:
    http://www.macosxhints.com/article.php?story=20060225091102170
    Thanks
    iMac G5 20"   Mac OS X (10.4.5)  

    While this isn't really specific at all to OS X Server (please keep your questions in the "Mac OS X Server" topic area related to OS X Server, it helps you and everyone else
    Now then:
    Please note the comments of "robg" (the site-"mom"/host):
    "You'll want to save the script without the .txt extension, and remember to make it executable with chmod a+x site2template.sh
    Save the file to your Desktop, and remove the ".txt" from the name so it's named: site2template.sh
    then in the Terminal, issue:
    chmod +x ~/Desktop/site2template.sh
    "~" is shortcut for "the current user's (my) home directory"
    From there you can simply use:
    ~/Desktop/site2template.sh /your/site
    But, far better to:
    choose a location to save the script, typically /usr/local/bin:
    make the directory if you don't have one:
    sudo mkdir /usr/local/bin
    sudo cp ~/Desktop/site2template.sh /usr/local/bin/
    then adjust the permissions:
    sudo chmod 755 /usr/local/bin/site2template.sh
    You may want to add /usr/local/bin to your path.
    cat /etc/profile
    and if you don't see it, add:
    PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"
    export PATH
    ie:
    sudo cp /etc/profile /etc/profile.bak
    (back it up to play safe)
    sudo pico /etc/profile
    and add
    :/usr/local/bin
    to the path info.
    Save it (ctl w)
    exit (ctl x)
    then type: source /etc/profile
    (start learning vi or emacs eventually)
    and you'll be able to run:
    site2template /path\ to/your/site/to\ convert

Maybe you are looking for