Difference between revisions of "Swestore/Lund Seminar Apr18"
(→proxy_upload script) |
(→proxy_upload) |
||
Line 33: | Line 33: | ||
This command will look in the /tmp dir for uploaded proxy_certs for your username and rename the file to the standard ARC proxy format. | This command will look in the /tmp dir for uploaded proxy_certs for your username and rename the file to the standard ARC proxy format. | ||
− | == proxy_upload == | + | == proxy_upload (local machine) == |
<pre>#!/bin/bash | <pre>#!/bin/bash |
Revision as of 21:35, 18 April 2013
Slides
File:Swestore slides sem apr15.pdf
Links
General information on SweStore
proxy_transfer scripts
The following script can be used in conjunction with the installed proxy_use script (installed on Platon and Alarik)
Usage:
proxy_upload [hostname] [username]
This generates a proxy certificates on your local machine and transfers it to the temp-directory on the remote resource using a unique filename.
On the remote machine:
proxy_use
This command will look in the /tmp dir for uploaded proxy_certs for your username and rename the file to the standard ARC proxy format.
proxy_upload (local machine)
#!/bin/bash if [ $# -ne 2 ] then echo "Usage: `basename $0` hostname username" exit $E_BADARGS fi proxyPath=/tmp/x509up_u$UID echo "Generating proxy certificate." arcproxy --proxy=$proxyPath echo if [ -e $proxyPath ] ; then echo "Found generated proxy certificate : $proxyPath" else echo "Could not find any proxy certificate." return -1 fi uuid=`uuidgen` remoteProxyPath=/tmp/x509_up_$2_$uuid echo echo "Uploading proxy certificate to $1." scp -p -q $proxyPath $2@$1:$remoteProxyPath echo echo "-------------------------------------------------------------" echo "To use the uploaded proxy on $1, issue the" echo "following command:" echo echo "proxy_use" echo "-------------------------------------------------------------" echo
proxy_use
#!/bin/env python import sys, os from datetime import datetime tempDir = "/tmp" def findProxyFiles(): userName = os.environ["LOGNAME"] allFiles = os.listdir(tempDir) proxyFiles = [] for dirEntry in allFiles: fullPath = os.path.join(tempDir, dirEntry) if os.path.isfile(fullPath): if fullPath.find("x509_up_%s" % userName)!=-1: proxyFiles.append(fullPath) return proxyFiles if __name__ == "__main__": stdProxyFilename = os.path.join(tempDir, "x509up_u%s" % os.getuid()) proxyCertExists = False if os.path.isfile(stdProxyFilename): print("Proxy certificate %s exists." % stdProxyFilename) proxyCertExists = True else: print("No existing proxy certificate %s found. " % stdProxyFilename) proxyFiles = findProxyFiles() proxyDict = {} for proxyFilename in proxyFiles: info = os.stat(proxyFilename) proxyDict[info.st_ctime] = proxyFilename sortedProxyKeys = proxyDict.keys() sortedProxyKeys.sort() sortedProxyKeys.reverse() if proxyCertExists: proxyCount = 1 else: proxyCount = 0 for timeStamp in sortedProxyKeys: if (proxyCount == 0): datetime = datetime.fromtimestamp(timeStamp) os.rename(proxyDict[timeStamp], stdProxyFilename) print("Created %s from uploaded proxy %s." % (stdProxyFilename, proxyDict[timeStamp])) else: print("Removing old uploaded proxy %s." % proxyDict[timeStamp]) os.remove(proxyDict[timeStamp]) proxyCount += 1 if len(proxyFiles) == 0: print("No uploaded proxy files found. Please upload proxy files using proxy_upload.")