Difference between revisions of "Swestore/Lund Seminar Apr18"
(Created page with "= Seminar: Using the national storage system (SweStore) = == Slides == == Links == == proxy_transfer package ==") |
(Add category and fix sections) |
||
(11 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
− | + | [[Category:Swestore]] | |
+ | [[Category:Swestore user guide]] | ||
− | + | = Slides = | |
− | + | [[File:Swestore_slides_sem_apr15.pdf]] | |
− | == proxy_transfer | + | = 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] | ||
+ | |||
+ | [http://youtu.be/I-tNFvSIaRU Video - Generating a Terena certificate] | ||
+ | |||
+ | [http://youtu.be/E9D24PZDK_k Video – Exporting Terena Certificate - Part 1] | ||
+ | |||
+ | [http://youtu.be/jDq774WeF_Y Video – Exporting Terena Certificate - Part 2] | ||
+ | |||
+ | [http://arc-gui-clients.sourceforge.net/ ARC Storage Explorer] | ||
+ | |||
+ | = 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 (on remote machine) == | ||
+ | |||
+ | Available on Platon and Alarik | ||
+ | |||
+ | <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> |
Revision as of 11:22, 14 October 2019
Contents
Slides
File:Swestore slides sem apr15.pdf
Links
General information on SweStore
Video - Generating a Terena certificate
Video – Exporting Terena Certificate - Part 1
Video – Exporting Terena Certificate - Part 2
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 (on remote machine)
Available on Platon and Alarik
#!/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.")