Difference between revisions of "Swestore/Lund Seminar Apr18"

From SNIC Documentation
Jump to: navigation, search
(proxy_upload)
(Swestore documentation moved)
(Tag: New redirect)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Slides ==
+
#REDIRECT[[Swestore Documentation Moved]]
 
 
[[File:Swestore_slides_sem_apr15.pdf]]
 
 
 
== Links ==
 
 
 
[http://docs.snic.se/wiki/Swestore General information on SweStore]
 
 
 
[http://docs.snic.se/wiki/Apply_for_storage_on_SweStore Applying for storage]
 
 
 
[http://docs.snic.se/wiki/Grid_certificates#Requesting_a_certificate Applying for certificate]
 
 
 
[http://download.nordugrid.org/repos-13.02.html Installing NorduGrid Client]
 
 
 
== proxy_transfer scripts ==
 
 
 
The following script can be used in conjunction with the installed proxy_use script (installed on Platon and Alarik)
 
 
 
Usage:
 
 
 
<pre>
 
proxy_upload [hostname] [username]
 
</pre>
 
 
 
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:
 
 
 
<pre>
 
proxy_use
 
</pre>
 
 
 
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) ==
 
 
 
<pre>#!/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</pre>
 
 
 
== proxy_use ==
 
 
 
<pre>
 
#!/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.")
 
</pre>
 

Latest revision as of 10:01, 8 February 2023