Swestore/Lund Seminar Apr18
Revision as of 21:34, 18 April 2013 by Jonas Lindemann (LUNARC) (talk | contribs) (→proxy_upload script)
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
#!/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.")