cas.conf
by Adam Stokes
cas.conf | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
New commits:
commit 4f73ed425f006e19eda8b78242e20ed39c835c00
Author: adam stokes <uzr(a)jak.rebo>
Date: Thu Oct 29 09:39:35 2009 -0400
- reset conf defaults
diff --git a/cas.conf b/cas.conf
index 004d0f5..47c5d57 100644
--- a/cas.conf
+++ b/cas.conf
@@ -11,7 +11,7 @@
[settings]
# Set the user you wish to run cas as.
-casuser=root
+casuser=cas
# Set keytype for user authentication
# Options: RSA/DSS
@@ -31,7 +31,7 @@ rpmFilter=.*kerne.+-debuginfo-[0-9].*\.rpm
# cpio is run against an rpm and extract the debug kernel
# for a small amount of time. This could be something like
# /tmp if space permitted
-debugs=/tmp
+debugs=/home/cas/debugs
# debug level (DEBUG, INFO)
debugLevel=DEBUG
14 years, 6 months
cas
by Adam Stokes
cas | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
New commits:
commit eaf2b9f6c8c0f6fea2ad34881b698c1f09a1dfdd
Author: adam stokes <uzr(a)jak.rebo>
Date: Thu Oct 15 15:49:53 2009 -0400
- comment update
diff --git a/cas b/cas
index 5878f6c..97c6ada 100755
--- a/cas
+++ b/cas
@@ -197,8 +197,8 @@ class CasApplication(object):
corefileArch = self.util.getElfArch(corefile)
self.casLog.debug("core arch %s" % (corefileArch,))
- # Read current machine arch to see if we can bypass func and proceed
- # with processing the core on the current machine
+ # Read current machine arch to see if we can bypass remote machine
+ # processing
currentMachineArch = Popen(["uname","-m"], stdout=PIPE, stderr=PIPE)
currentMachineArch = currentMachineArch.stdout.read().strip()
self.casLog.debug("local machine arch %s" % (currentMachineArch,))
14 years, 6 months
cas lib/cas
by Adam Stokes
cas | 2 +-
lib/cas/network.py | 3 +--
2 files changed, 2 insertions(+), 3 deletions(-)
New commits:
commit f8b4b307540f762846ce4707c42a296e8df6f482
Author: adam stokes <uzr(a)jak.rebo>
Date: Thu Oct 15 15:45:10 2009 -0400
- minor
diff --git a/cas b/cas
index a142f79..5878f6c 100755
--- a/cas
+++ b/cas
@@ -274,7 +274,7 @@ class CasApplication(object):
self.casLog.info("Machine %s found, processing " \
"crash output" % (hostname,))
cmd = ["cd " + os.path.join(self.storagePath) + "\n",
- "&& ./crash -i crash.in > crash.out\n"]
+ "./crash -i crash.in > crash.out\n"]
Executor(settings["SSHKEY"], hostname,
port, settings["CASUSER"],
cmd).run()
diff --git a/lib/cas/network.py b/lib/cas/network.py
index fdf591b..4de5e39 100644
--- a/lib/cas/network.py
+++ b/lib/cas/network.py
@@ -97,7 +97,7 @@ class Executor(object):
# check remote server key
key = transport.get_remote_server_key()
- if not keys.has_key(hostname):
+ if not keys.has_key(self.hostname):
raise CasNetworkException("Unknown host key")
elif not keys[self.hostname].has_key(key.get_name()):
raise CasNetworkException("Unknown host key")
@@ -124,6 +124,5 @@ class Executor(object):
channel.recv_ready()
channel.close()
transport.close()
-
return
14 years, 6 months
cas release 0.15
by Adam Stokes
A new release of cas is now available.
Updates/Enhancements:
- Replaced func with paramiko. This gives the user the ability to run cas as a user other than root. (cas-admin is still required to run as root, however).
- Update documentation to help you along with the new configuration settings that allows you to more finely tune cas.
- Some speed up improvements like using a local copy of an installed debug kernel if exists rather than extracting a second debug kernel.
Its been submitted to testing repo's for both f10/11 and is awaiting bodhi to finalize the push. Please test and report your experiences on the list.
Thanks
--
__ __
.-----.| |_.-----.| |--.-----.-----.
|__ --|| _| _ || <| -__|__ --|
|_____||____|_____||__|__|_____|_____|
.----------------------------------.
( ajs(a)redhat.com || 919.754.4187 )
`----------------------------------'
14 years, 6 months
cas cas.conf doc/index.html doc/index.rst doc/searchindex.js doc/_sources lib/cas
by Adam Stokes
cas | 15 ++++--------
cas.conf | 4 +++
doc/_sources/index.txt | 3 ++
doc/index.html | 2 +
doc/index.rst | 3 ++
doc/searchindex.js | 2 -
lib/cas/network.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++++
7 files changed, 80 insertions(+), 10 deletions(-)
New commits:
commit 0844bc4787be57c8deaa1848b3a57dd58834b2db
Author: adam stokes <uzr(a)jak.rebo>
Date: Thu Oct 15 14:23:48 2009 -0400
- reworked ssh authentication to used transport and allows
for multiple command execution
diff --git a/cas b/cas
index 36d40c4..a142f79 100755
--- a/cas
+++ b/cas
@@ -25,7 +25,7 @@ import paramiko
from cas.cas_subprocess import Popen, PIPE
from datetime import datetime
-from cas.network import Download, CasNetworkException
+from cas.network import Download, Executor, CasNetworkException
from cas.core import CoreBase, CoreException
from cas.db import CasStorage, CasStorageException
from cas.util import UtilBase, Logging
@@ -273,14 +273,11 @@ class CasApplication(object):
# TODO: Randomize server selection
self.casLog.info("Machine %s found, processing " \
"crash output" % (hostname,))
- cmd = "cd " + os.path.join(self.storagePath) + " && ./crash -i crash.in > crash.out"
- try:
- ssh_obj.connect(hostname, port=port, username=settings["CASUSER"])
- except:
- raise SystemExit(self.casLog.debug("Failed to connect to %s" % (hostname,)))
- ssh_obj.exec_command(cmd)
- if stderr:
- self.casLog.debug(stderr)
+ cmd = ["cd " + os.path.join(self.storagePath) + "\n",
+ "&& ./crash -i crash.in > crash.out\n"]
+ Executor(settings["SSHKEY"], hostname,
+ port, settings["CASUSER"],
+ cmd).run()
break
else:
self.casLog.info("No servers available for arch and current system not "\
diff --git a/cas.conf b/cas.conf
index 880a2db..004d0f5 100644
--- a/cas.conf
+++ b/cas.conf
@@ -13,6 +13,10 @@
# Set the user you wish to run cas as.
casuser=root
+# Set keytype for user authentication
+# Options: RSA/DSS
+sshkey=dss
+
# Where kernel-debuginfo packages are stored
# NOTE: this _can_ include symlinked directories, just be careful they are
# indefinately recursive
diff --git a/doc/_sources/index.txt b/doc/_sources/index.txt
index dfd0563..087eb68 100644
--- a/doc/_sources/index.txt
+++ b/doc/_sources/index.txt
@@ -52,6 +52,7 @@ each section and describe its meaning::
[settings]
casuser=root
+ sshkey=dss
kernels=/mnt/kernels
rpmFilter=.*kerne.+-debuginfo-[0-9].*\.rpm
debugs=/cores/debugs
@@ -68,6 +69,8 @@ each section and describe its meaning::
``casuser``: (**Required**) User to run cas, recommended to run as someone other than root.
+``sshkey``: (**Required**) Used for ssh negotiation, these are generated with ``ssh-keygen``.
+
``kernels``: (**Required**) Describes the location of where kernel-debuginfo packages are to be
stored. This can range anywhere from an nfs mount, samba share, local disk or
any other type of media the cas server can access.
diff --git a/doc/index.html b/doc/index.html
index 36220de..c0f1ba7 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -85,6 +85,7 @@ The overall contents of this file is shown below, further down we will break up
each section and describe its meaning:</p>
<div class="highlight-python"><pre>[settings]
casuser=root
+sshkey=dss
kernels=/mnt/kernels
rpmFilter=.*kerne.+-debuginfo-[0-9].*\.rpm
debugs=/cores/debugs
@@ -100,6 +101,7 @@ autoPurge=Yes
# buffersize=None</pre>
</div>
<p><tt class="docutils literal"><span class="pre">casuser</span></tt>: (<strong>Required</strong>) User to run cas, recommended to run as someone other than root.</p>
+<p><tt class="docutils literal"><span class="pre">sshkey</span></tt>: (<strong>Required</strong>) Used for ssh negotiation, these are generated with <tt class="docutils literal"><span class="pre">ssh-keygen</span></tt>.</p>
<p><tt class="docutils literal"><span class="pre">kernels</span></tt>: (<strong>Required</strong>) Describes the location of where kernel-debuginfo packages are to be
stored. This can range anywhere from an nfs mount, samba share, local disk or
any other type of media the cas server can access.</p>
diff --git a/doc/index.rst b/doc/index.rst
index dfd0563..087eb68 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -52,6 +52,7 @@ each section and describe its meaning::
[settings]
casuser=root
+ sshkey=dss
kernels=/mnt/kernels
rpmFilter=.*kerne.+-debuginfo-[0-9].*\.rpm
debugs=/cores/debugs
@@ -68,6 +69,8 @@ each section and describe its meaning::
``casuser``: (**Required**) User to run cas, recommended to run as someone other than root.
+``sshkey``: (**Required**) Used for ssh negotiation, these are generated with ``ssh-keygen``.
+
``kernels``: (**Required**) Describes the location of where kernel-debuginfo packages are to be
stored. This can range anywhere from an nfs mount, samba share, local disk or
any other type of media the cas server can access.
diff --git a/doc/searchindex.js b/doc/searchindex.js
index ae7ddbe..ae8a507 100644
--- a/doc/searchindex.js
+++ b/doc/searchindex.js
@@ -1 +1 @@
-Search.setIndex({desctypes:{},terms:{all:0,mnt:0,snip:0,abil:0,follow:0,disk:0,depend:0,wish:0,do_dlm_lock:0,those:0,aris:0,worth:0,sent:0,r14:0,r15:0,r12:0,r13:0,r10:0,r11:0,faq:0,ffffffff8010e789:0,vmcore:0,upstream:0,octob:0,ticket:0,relev:0,administr:0,level:0,die:0,list:0,prepar:0,pleas:0,x86_64:0,core:0,direct:0,pass:0,download:0,further:0,rbp:0,sub:0,section:0,abl:0,access:0,version:0,hostkei:0,autogener:0,gener:0,here:0,address:0,path:0,sinc:0,valu:0,ffffffff80110bf5:0,rdx:0,amount:0,typic:0,rdi:0,smp_call_function_interrupt:0,chanc:0,"0000010001073f48":0,repositori:0,modul:0,prefer:0,crash_32:0,filenam:0,id_dsa:0,instal:0,from:0,describ:0,would:0,memori:0,doubl:0,visit:0,two:0,next:0,few:0,usr:0,recommend:0,type:0,tell:0,more:0,sort:0,wrapper:0,share:0,ffffffff803e9b80:0,"1tb":0,must:0,none:0,retriev:0,hous:0,setup:0,work:0,uniqu:0,can:0,root:0,sqlite:0,tar:0,process:0,smtp:0,accept:0,want:0,occur:0,multipl:0,anoth:0,snippet:0,how:0,error_exit:0,purg:0,opt:0,verifi:0,perspect:0,ffffffff80528000:0,resourc:0,passwordless:0,"00000102000a4780":0,clone:0,reflect:0,date:0,data:0,physic:0,essenti:0,issu:0,inform:0,environ:0,suggest:0,order:0,help:0,over:0,major:0,i386:0,hierarchi:0,paramet:0,"100f57cb030":0,requir:0,mail:0,main:0,alter:0,crash:0,thei:0,python:0,auto:0,overal:0,dai:0,initi:0,"break":0,mention:0,itanium:0,now:0,introduct:0,name:0,edit:0,troubleshoot:0,authent:0,kern:0,each:0,debug:0,mean:0,mai:0,continu:0,happen:0,extract:0,buffers:0,out:0,shown:0,network:0,ffffffff8014cc1d:0,ffffffff8011d191:0,content:0,fffffffffffffffa:0,dsa:0,advanc:0,orig_rax:0,given:0,base:0,releas:0,org:0,ffffffff80110e1d:0,traceback:0,keep:0,vmlinux:0,thing:0,yum:0,isn:0,assign:0,first:0,origin:0,rang:0,onc:0,number:0,swapper:0,instruct:0,done:0,least:0,rflag:0,differ:0,script:0,associ:0,interact:0,system:0,messag:0,ffffffff80112058:0,statement:0,ffffffff8047a0a0:0,"final":0,boil:0,editor:0,option:0,debuginfo:0,tool:0,copi:0,specifi:0,hassl:0,exactli:0,rsp:0,than:0,provid:0,emac:0,structur:0,store:0,stale:0,"function":0,ani:0,fail:0,have:0,call_function_interrupt:0,"101f3658030":0,rax:0,rsi:0,packag:0,engin:0,bz2:0,lib:0,note:0,also:0,client:0,build:0,which:0,begin:0,normal:0,buffer:0,previou:0,compress:0,most:0,regular:0,deploi:0,"101f21efb80":0,gather:0,place:0,determin:0,irq:0,usual:0,show:0,text:0,fine:0,find:0,current:0,onli:0,locat:0,configur:0,solut:0,state:0,should:0,analyz:0,local:0,variou:0,cvjf:0,express:0,autom:0,repo:0,mainten:0,ssh:0,ellargesmp:0,enabl:0,organ:0,cleanli:0,contain:0,where:0,wiki:0,kernel:0,set:0,dump:0,"10001073f48":0,see:0,result:0,arg:0,corrupt:0,subject:0,ffffffffa03183ff:0,detect:0,purgelimit:0,kei:0,databas:0,someth:0,enough:0,between:0,approach:0,email:0,altern:0,assumpt:0,extend:0,cpu_idl:0,default_idl:0,job:0,come:0,tue:0,addit:0,last:0,admin:0,fault:0,etc:0,instanc:0,mani:0,com:0,improp:0,load:0,simpli:0,point:0,"1000107bfb0":0,rpm:0,casus:0,coredump:0,been:0,mark:0,much:0,popul:0,quickli:0,largesmp:0,anywher:0,try_crashdump:0,"0000000000000e86":0,present:0,therefor:0,look:0,rbx:0,solid:0,mount:0,keygen:0,defin:0,abov:0,error:0,"101f21efb20":0,ffffffff8047a0b0:0,timefram:0,rip:0,need:0,archiv:0,uncom:0,conf:0,fedorahost:0,sever:0,fedora:0,author:0,media:0,same:0,binari:0,timestamp:0,x86:0,someon:0,temporari:0,user:0,"500gb":0,stack:0,task:0,"10001073e98":0,entri:0,do_invalid_op:0,exampl:0,command:0,thi:0,filesystem:0,gzip:0,everyth:0,latest:0,identifi:0,execut:0,workdirectori:0,heavili:0,previous:0,samba:0,except:0,valid:0,match:0,bin:0,read:0,kmem:0,debuglevel:0,smtphost:0,mod:0,"1000107bfa0":0,resid:0,like:0,specif:0,anyon:0,manual:0,resolv:0,server:0,collect:0,necessari:0,either:0,"101f21efb60":0,"101f21efc40":0,output:0,some:0,back:0,gfs_quotad:0,proper:0,tmp:0,assum:0,ffffffff80529f08:0,exit:0,machin:0,intial:0,who:0,run:0,reach:0,usag:0,host:0,prerequisit:0,prove:0,unfortun:0,primarili:0,within:0,automat:0,down:0,"101f21efb50":0,chang:0,start_disk_dump:0,storag:0,git:0,rcx:0,log:0,wai:0,area:0,support:0,question:0,avail:0,includ:0,suit:0,"var":0,rhel:0,analysi:0,properli:0,form:0,pwd:0,line:0,analyst:0,info:0,commun:0,made:0,possibl:0,"default":0,checkout:0,below:0,ffffffff80111c90:0,otherwis:0,problem:0,similar:0,epel:0,later:0,certain:0,dure:0,pid:0,incomplet:0,exist:0,file:0,cvzf:0,fill:0,bzip2:0,"00000100f57cb030":0,when:0,other:0,ffffffff8010e7a9:0,architectur:0,corefil:0,benefici:0,autopurg:0,ffffffff80529fb8:0,stoke:0,directori:0,descript:0,adam:0,time:0,ffffffff8010e81c:0,rpmfilter:0,cpu:0},titles:["Core Analysis System"],modules:{},descrefs:{},filenames:["index"]})
\ No newline at end of file
+Search.setIndex({desctypes:{},terms:{all:0,mnt:0,dss:0,snip:0,abil:0,follow:0,disk:0,depend:0,do_dlm_lock:0,those:0,aris:0,worth:0,sent:0,r14:0,r15:0,r12:0,r13:0,r10:0,r11:0,faq:0,ffffffff8010e789:0,vmcore:0,upstream:0,octob:0,ticket:0,relev:0,administr:0,level:0,die:0,list:0,prepar:0,pleas:0,x86_64:0,intial:0,direct:0,pass:0,download:0,further:0,keygen:0,sub:0,section:0,abl:0,access:0,version:0,hostkei:0,autogener:0,gener:0,here:0,address:0,path:0,sinc:0,valu:0,ffffffff80110bf5:0,rdx:0,amount:0,typic:0,rdi:0,smp_call_function_interrupt:0,chanc:0,"0000010001073f48":0,prerequisit:0,modul:0,prefer:0,crash_32:0,filenam:0,id_dsa:0,instal:0,from:0,describ:0,would:0,memori:0,doubl:0,visit:0,two:0,next:0,few:0,usr:0,recommend:0,type:0,tell:0,more:0,sort:0,wrapper:0,share:0,ffffffff803e9b80:0,"1tb":0,must:0,none:0,retriev:0,hous:0,setup:0,work:0,uniqu:0,can:0,root:0,sqlite:0,tar:0,process:0,smtp:0,accept:0,want:0,occur:0,multipl:0,anoth:0,snippet:0,how:0,error_exit:0,purg:0,verifi:0,negoti:0,perspect:0,ffffffff80528000:0,resourc:0,passwordless:0,"00000102000a4780":0,clone:0,reflect:0,mai:0,associ:0,physic:0,essenti:0,issu:0,inform:0,environ:0,media:0,order:0,help:0,over:0,major:0,i386:0,hierarchi:0,paramet:0,"100f57cb030":0,ellargesmp:0,bin:0,mail:0,main:0,alter:0,crash:0,thei:0,python:0,auto:0,overal:0,dai:0,initi:0,"break":0,mention:0,itanium:0,now:0,introduct:0,name:0,edit:0,troubleshoot:0,authent:0,kern:0,each:0,debug:0,mean:0,continu:0,happen:0,extract:0,buffers:0,out:0,shown:0,network:0,ffffffff8014cc1d:0,ffffffff8011d191:0,content:0,fffffffffffffffa:0,dsa:0,advanc:0,orig_rax:0,given:0,base:0,releas:0,org:0,ffffffff80110e1d:0,traceback:0,keep:0,vmlinux:0,thing:0,yum:0,isn:0,assign:0,first:0,origin:0,rang:0,onc:0,number:0,swapper:0,instruct:0,done:0,least:0,rflag:0,differ:0,script:0,data:0,interact:0,system:0,messag:0,ffffffff80112058:0,statement:0,ffffffff8047a0a0:0,"final":0,store:0,includ:0,option:0,debuginfo:0,tool:0,copi:0,specifi:0,"var":0,checkout:0,exactli:0,rsp:0,than:0,provid:0,see:0,structur:0,boil:0,stale:0,analysi:0,ani:0,fail:0,have:0,call_function_interrupt:0,"101f3658030":0,rax:0,rsi:0,packag:0,date:0,bz2:0,lib:0,note:0,also:0,exampl:0,build:0,which:0,begin:0,normal:0,buffer:0,previou:0,compress:0,most:0,regular:0,deploi:0,"101f21efb80":0,gather:0,place:0,determin:0,irq:0,latest:0,show:0,text:0,fine:0,find:0,current:0,onli:0,locat:0,configur:0,solut:0,state:0,should:0,analyz:0,local:0,variou:0,cvjf:0,express:0,autom:0,repo:0,mainten:0,ssh:0,requir:0,enabl:0,organ:0,cleanli:0,contain:0,where:0,wiki:0,kernel:0,set:0,dump:0,"10001073f48":0,emac:0,result:0,arg:0,corrupt:0,subject:0,ffffffffa03183ff:0,detect:0,purgelimit:0,extend:0,databas:0,someth:0,enough:0,between:0,approach:0,email:0,altern:0,assumpt:0,kei:0,cpu_idl:0,default_idl:0,job:0,come:0,tue:0,addit:0,last:0,admin:0,fault:0,etc:0,instanc:0,mani:0,com:0,improp:0,load:0,simpli:0,point:0,"1000107bfb0":0,rpm:0,casus:0,coredump:0,been:0,mark:0,much:0,sshkei:0,popul:0,quickli:0,largesmp:0,anywher:0,try_crashdump:0,"0000000000000e86":0,present:0,therefor:0,look:0,rbx:0,solid:0,mount:0,rbp:0,defin:0,abov:0,error:0,"101f21efb20":0,ffffffff8047a0b0:0,timefram:0,rip:0,need:0,archiv:0,uncom:0,conf:0,fedorahost:0,sever:0,fedora:0,author:0,suggest:0,same:0,binari:0,timestamp:0,x86:0,someon:0,temporari:0,user:0,"500gb":0,engin:0,stack:0,task:0,"10001073e98":0,entri:0,do_invalid_op:0,client:0,command:0,thi:0,filesystem:0,gzip:0,everyth:0,usual:0,identifi:0,execut:0,workdirectori:0,heavili:0,previous:0,samba:0,except:0,other:0,match:0,opt:0,read:0,kmem:0,debuglevel:0,smtphost:0,mod:0,"1000107bfa0":0,resid:0,like:0,specif:0,anyon:0,manual:0,resolv:0,server:0,collect:0,necessari:0,either:0,"101f21efb60":0,"101f21efc40":0,output:0,some:0,back:0,gfs_quotad:0,proper:0,tmp:0,assum:0,ffffffff80529f08:0,exit:0,machin:0,core:0,who:0,run:0,reach:0,usag:0,host:0,repositori:0,prove:0,unfortun:0,primarili:0,within:0,automat:0,down:0,"101f21efb50":0,chang:0,start_disk_dump:0,storag:0,git:0,rcx:0,log:0,wai:0,area:0,support:0,question:0,avail:0,editor:0,suit:0,hassl:0,rhel:0,"function":0,properli:0,form:0,pwd:0,line:0,analyst:0,info:0,commun:0,made:0,possibl:0,"default":0,wish:0,below:0,ffffffff80111c90:0,otherwis:0,problem:0,similar:0,epel:0,later:0,certain:0,dure:0,pid:0,incomplet:0,exist:0,file:0,cvzf:0,fill:0,bzip2:0,"00000100f57cb030":0,when:0,valid:0,ffffffff8010e7a9:0,architectur:0,corefil:0,benefici:0,autopurg:0,ffffffff80529fb8:0,stoke:0,directori:0,descript:0,adam:0,time:0,ffffffff8010e81c:0,rpmfilter:0,cpu:0},titles:["Core Analysis System"],modules:{},descrefs:{},filenames:["index"]})
\ No newline at end of file
diff --git a/lib/cas/network.py b/lib/cas/network.py
index 1371730..fdf591b 100644
--- a/lib/cas/network.py
+++ b/lib/cas/network.py
@@ -12,6 +12,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import sys
+import socket
import os
import urlparse
import urlgrabber.grabber as grabber
@@ -66,3 +67,63 @@ class Download(object):
url.close()
return self.output
+
+class Executor(object):
+ """ execute remote ssh
+ """
+ def __init__(self, key_type, username, hostname, port, cmdlist):
+ self.key_type = key_type
+ self.username = username
+ self.hostname = hostname
+
+ def run(self):
+ try:
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ sock.connect((self.hostname, self.port))
+ except Exception, e:
+ raise CasNetworkException(e)
+
+ # build transport
+ transport = paramiko.Transport(sock)
+ try:
+ transport.start_client()
+ except paramiko.SSHException:
+ raise CasNetworkException("SSH negotiation failed")
+
+ try:
+ keys = paramiko.util.load_host_keys(os.path.expanduser("~/.ssh/known_hosts"))
+ except IOError:
+ raise CasNetworkException("Unable to load $HOME/.ssh/known_hosts")
+
+ # check remote server key
+ key = transport.get_remote_server_key()
+ if not keys.has_key(hostname):
+ raise CasNetworkException("Unknown host key")
+ elif not keys[self.hostname].has_key(key.get_name()):
+ raise CasNetworkException("Unknown host key")
+ elif keys[self.hostname][key.get_name()] != key:
+ raise CasNetworkException("Host key has changed")
+ else:
+ pass
+
+ # grab rsa/dss key
+ if self.key_type = 'dss':
+ priv_key = paramiko.DSSKey.from_private_key_file(os.path.expanduser("~/.ssh/id_dsa"))
+ transport.auth_publickey(self.username, priv_key)
+ elif self.key_type = 'rsa':
+ priv_key = paramiko.RSAKey.from_private_key_file(os.path.expanduser("~/.ssh/id_dsa"))
+ transport.auth_publickey(self.username, priv_key)
+ else:
+ raise CasNetworkException("Unable to determine key file")
+
+ channel = transport.open_session()
+ channel.exec_command('bash -s')
+ for cmd in cmdlist:
+ channel.send_ready()
+ channel.send(cmd)
+ channel.recv_ready()
+ channel.close()
+ transport.close()
+
+ return
+
14 years, 6 months
cas cas-admin cas.spec lib/cas
by Adam Stokes
cas | 32 +++++++++++++++++++-------------
cas-admin | 9 +++++++--
cas.spec | 3 ++-
lib/cas/core.py | 2 +-
lib/cas/db.py | 11 ++++++-----
5 files changed, 35 insertions(+), 22 deletions(-)
New commits:
commit b010cac60401854ed7a458d83138b9e057f42a9f
Author: adam stokes <uzr(a)jak.rebo>
Date: Thu Oct 15 13:52:10 2009 -0400
- still ironing out ssh details :(
diff --git a/cas b/cas
index 3e3ade1..36d40c4 100755
--- a/cas
+++ b/cas
@@ -20,11 +20,12 @@ import os
import ConfigParser
import smtplib
import socket
+import paramiko
from cas.cas_subprocess import Popen, PIPE
from datetime import datetime
-from cas.network import Download, Executor, CasNetworkException
+from cas.network import Download, CasNetworkException
from cas.core import CoreBase, CoreException
from cas.db import CasStorage, CasStorageException
from cas.util import UtilBase, Logging
@@ -167,7 +168,7 @@ class CasApplication(object):
# so we base the hierarchy /workDirectory/identifier/datetime
datenow = datetime.now()
dateFormatted = datenow.strftime("%Y.%m.%d.%I.%M.%S")
- self.storagePath = os.path.join(WORKDIRECTORY, self.identifier)
+ self.storagePath = os.path.join(settings["WORKDIRECTORY"], self.identifier)
self.storagePath = os.path.join(self.storagePath, dateFormatted)
# build logger object to deal with logging per job and keep things
@@ -264,22 +265,27 @@ class CasApplication(object):
self.casLog.info("Crash file built, locating suitable %s system for " \
"processing" % (debugKernelArch,))
serverList = self.db.getServers()
+ ssh_obj = paramiko.SSHClient()
+ ssh_obj.load_host_keys(os.path.expanduser("~/.ssh/known_hosts"))
if serverList:
- for hostname, arch in serverList:
+ for hostname, arch, port in serverList:
if arch == debugKernelArch:
# TODO: Randomize server selection
- casProcessMachine = hostname
self.casLog.info("Machine %s found, processing " \
- "crash output" % (casProcessMachine,))
+ "crash output" % (hostname,))
cmd = "cd " + os.path.join(self.storagePath) + " && ./crash -i crash.in > crash.out"
- # TODO: run command through paramiko
- results, err = Executor(hostname, settings["CASUSER"], cmd).run()
- if err:
- self.casLog.debug("Unable to perform results")
- else:
- self.casLog.info("No servers available for arch and current system not "\
- "suitable for processing, please run cas-admin -h " \
- "for more information")
+ try:
+ ssh_obj.connect(hostname, port=port, username=settings["CASUSER"])
+ except:
+ raise SystemExit(self.casLog.debug("Failed to connect to %s" % (hostname,)))
+ ssh_obj.exec_command(cmd)
+ if stderr:
+ self.casLog.debug(stderr)
+ break
+ else:
+ self.casLog.info("No servers available for arch and current system not "\
+ "suitable for processing, please run cas-admin -h " \
+ "for more information")
else:
raise SystemExit(self.casLog.info("No servers database found, please run cas-admin -h for " \
"more information"))
diff --git a/cas-admin b/cas-admin
index ec98ead..ca154a4 100755
--- a/cas-admin
+++ b/cas-admin
@@ -45,6 +45,11 @@ if config.has_section("settings"):
PURGELIMIT = config.get("maintenance","purgeLimit")
AUTOPURGE = config.getboolean("maintenance","autoPurge")
+# advance options
+BUFFERSIZE=None
+if config.has_option("advanced", "buffersize"):
+ BUFFERSIZE=config.get("advanced", "buffersize")
+
class CasDatabaseHandler(object):
def __init__(self, logger):
self.casLog = logger
@@ -87,7 +92,7 @@ class CasDatabaseHandler(object):
vmlinux = item.strip()
stamper = CoreBase()
debugKernel = os.path.normpath(vmlinux)
- timestamp = stamper.timestamp(debugKernel)
+ timestamp = stamper.timestamp(debugKernel, BUFFERSIZE)
# add rpm id, debug, timestamp to database
self.db.addTimestamp(id, debugKernel, timestamp)
# Cleanup extracted debugs
@@ -131,7 +136,7 @@ class CasServerHandler(object):
# clean up arch string
for i in stdout.readlines():
arch = i.strip()
- self.db.addServer(server, arch)
+ self.db.addServer(server, port, arch)
hostname_count = hostname_count + 1
self.casLog.info("Server database built with %d server(s) added." % (hostname_count,))
return
diff --git a/cas.spec b/cas.spec
index cc57342..733e717 100644
--- a/cas.spec
+++ b/cas.spec
@@ -49,9 +49,10 @@ rm -rf ${RPM_BUILD_ROOT}
%doc AUTHORS LICENSE README PKG-INFO doc/*
%changelog
-* Tue Sep 15 2009 Adam Stokes <ajs at redhat dot com> - 0.15-1
+* Thu Oct 15 2009 Adam Stokes <ajs at redhat dot com> - 0.15-1
- Require paramiko for all remote executions
- Rip out func code
+- Documentation update to include ssh setup
* Tue May 5 2009 Adam Stokes <ajs at redhat dot com> - 0.14-8
- support for purging old data
diff --git a/lib/cas/core.py b/lib/cas/core.py
index 010ad6f..d6a9bbe 100644
--- a/lib/cas/core.py
+++ b/lib/cas/core.py
@@ -93,7 +93,7 @@ class CoreBase(object):
return True
return False
- def timestamp(self, path, blksize):
+ def timestamp(self, path, blksize=None):
""" captures fingerprint from core
"""
match='Linux\sversion.*20\d{1,2}|#1\s.*20\d{1,2}'
diff --git a/lib/cas/db.py b/lib/cas/db.py
index c41683b..f88c37b 100644
--- a/lib/cas/db.py
+++ b/lib/cas/db.py
@@ -54,6 +54,7 @@ class CasStorage(object):
self.cursor.execute("""create table server (
server_id integer primary key autoincrement,
arch text,
+ port text,
hostname text)
""")
self.commit()
@@ -120,16 +121,16 @@ class CasStorage(object):
return
# SERVER METHODS
- def addServer(self, hostname, arch):
+ def addServer(self, hostname, port, arch):
""" add server/arch to db """
- values = (hostname, arch)
+ values = (hostname, port, arch)
self.cursor.execute('select * from server where hostname="%s"' % (hostname,))
if not self.cursor.fetchone():
- self.cursor.execute('''INSERT into server (hostname, arch)
- values ("%s","%s")''' % values)
+ self.cursor.execute('''INSERT into server (hostname, arch, port)
+ values ("%s","%s","%s")''' % values)
self.commit()
return
def getServers(self):
- self.cursor.execute('select hostname, arch from server')
+ self.cursor.execute('select hostname, port, arch from server')
return self.cursor.fetchall()
14 years, 6 months
doc/genindex.html doc/index.html doc/objects.inv doc/search.html doc/searchindex.js doc/_sources doc/_static
by Adam Stokes
doc/_sources/index.txt | 36 ++++++++++++++++++++++---------
doc/_static/basic.css | 11 ---------
doc/_static/default.css | 9 +++++++
doc/_static/searchtools.js | 4 +--
doc/genindex.html | 12 +++++-----
doc/index.html | 51 ++++++++++++++++++++++++++++-----------------
doc/objects.inv | 4 +--
doc/search.html | 12 +++++-----
doc/searchindex.js | 2 -
9 files changed, 85 insertions(+), 56 deletions(-)
New commits:
commit 7949bfe5c27cfb06af57ed1542fa57a451249120
Author: adam stokes <uzr(a)jak.rebo>
Date: Thu Oct 15 11:20:44 2009 -0400
- update html documentation
diff --git a/doc/_sources/index.txt b/doc/_sources/index.txt
index 332f761..dfd0563 100644
--- a/doc/_sources/index.txt
+++ b/doc/_sources/index.txt
@@ -30,12 +30,6 @@ Fedora 9 or later (this would include RHEL 4/5) the EPEL repo needs to be
installed. Visit `EPEL <https://fedoraproject.org/wiki/EPEL>`_ to enable
this repository.
-Optionally install `Func <http://fedorahosted.org/func>`_
-for automatic processing on other architecture specific systems. This
-can easily be installed via `yum`::
-
- $ yum install func
-
The amount of storage needed can be determined base on the following
information:
@@ -57,18 +51,22 @@ The overall contents of this file is shown below, further down we will break up
each section and describe its meaning::
[settings]
+ casuser=root
kernels=/mnt/kernels
rpmFilter=.*kerne.+-debuginfo-[0-9].*\.rpm
debugs=/cores/debugs
debugLevel=DEBUG
workDirectory=/cores/processed
- mailServer=mail.example.com
+ smtphost=mail.example.com
database=/var/db/cas/cas.db
[maintenance]
purgeLimit=90
autoPurge=Yes
[advanced]
# crash_32=/usr/local/i386/crash
+ # buffersize=None
+
+``casuser``: (**Required**) User to run cas, recommended to run as someone other than root.
``kernels``: (**Required**) Describes the location of where kernel-debuginfo packages are to be
stored. This can range anywhere from an nfs mount, samba share, local disk or
@@ -89,7 +87,7 @@ Currently the only accepted values are ``DEBUG|INFO``.
point will need to have the most storage assigned to it. Depending on how many
cores are processed in a given timeframe this area will fill up quickly.
-``mailServer``: If wanting output of CAS processing email to a certain address
+``smtphost``: If wanting output of CAS processing email to a certain address
this directive needs to be set. ``Note`` that the mail server should not
require smtp authentication.
@@ -106,6 +104,10 @@ version of crash is installed this directive can be set to the crash binary
and CAS will automatically process x86 cores on a x86_64 machine. ``Note`` this
is only available if the CAS server is a x86_64 machine.
+``buffersize``: Extend the read buffer when analyzing a core for a timestamp.
+``Note`` this is normally needed for itanium cores, otherwise, the default is
+fine.
+
Setup & Execution
-----------------
@@ -134,18 +136,20 @@ Altering the configuration to reflect the above assumptions would show the
following::
[settings]
+ casuser=cas
kernels=/mnt/kernels
rpmFilter=.*kerne.+-debuginfo-[0-9].*\.rpm
debugs=/tmp
debugLevel=DEBUG
workDirectory=/cores
- mailServer=mail.cas-server.com
+ smtphost=mail.cas-server.com
database=/var/db/cas/cas.db
[maintenance]
purgeLimit=90
autoPurge=Yes
[advanced]
crash_32=/usr/local/i386/crash
+ #buffer=None
Now that the configuration file is altered and ``/mnt/kernels`` should be populated
with kernel-debuginfo rpm's the next section will describe running CAS.
@@ -158,10 +162,22 @@ a database for all the data gathered from the kernel-debuginfo packages.::
$ cas-admin -b
-If ``Func`` is installed and several systems are deployed for CAS to use run::
+If several systems are deployed for CAS to use, ssh keys must be setup between the host (CAS) and
+the clients::
+
+ (cas-server) $ ssh-keygen -t dsa
+ Cas supports passwordless entries at this time.
+ (cas-server) $ ssh-copy-id -i ~/.ssh/id_dsa casuser(a)cas-client-system.com
+
+Once ssh has been setup between systems the following will build the server database::
$ cas-admin -s
+Please note that in order for cas to function properly it is required that only the cas
+user on the system has only those entries in its ssh hostkey file that are accessible
+with cas. Cas will error with ``Authentication Failed`` and exit cleanly if it runs
+into any system that it can not communicate with.
+
At this point CAS is configured and looking at the output of CAS help there are
a few options to pass::
diff --git a/doc/_static/basic.css b/doc/_static/basic.css
index ed737d3..128114b 100644
--- a/doc/_static/basic.css
+++ b/doc/_static/basic.css
@@ -5,15 +5,6 @@
/* -- main layout ----------------------------------------------------------- */
-div.documentwrapper {
- float: left;
- width: 100%;
-}
-
-div.bodywrapper {
- margin: 0 0 0 230px;
-}
-
div.clearer {
clear: both;
}
@@ -387,7 +378,7 @@ img.math {
vertical-align: middle;
}
-div.math p {
+div.body div.math p {
text-align: center;
}
diff --git a/doc/_static/default.css b/doc/_static/default.css
index c13ed68..c999f67 100644
--- a/doc/_static/default.css
+++ b/doc/_static/default.css
@@ -20,6 +20,15 @@ div.document {
background-color: #1c4e63;
}
+div.documentwrapper {
+ float: left;
+ width: 100%;
+}
+
+div.bodywrapper {
+ margin: 0 0 0 230px;
+}
+
div.body {
background-color: #ffffff;
color: #000000;
diff --git a/doc/_static/searchtools.js b/doc/_static/searchtools.js
index a243b15..e022625 100644
--- a/doc/_static/searchtools.js
+++ b/doc/_static/searchtools.js
@@ -341,9 +341,9 @@ var Search = {
}
for (var prefix in descrefs) {
for (var name in descrefs[prefix]) {
- if (name.toLowerCase().indexOf(object) > -1) {
+ var fullname = (prefix ? prefix + '.' : '') + name;
+ if (fullname.toLowerCase().indexOf(object) > -1) {
match = descrefs[prefix][name];
- fullname = (prefix ? prefix + '.' : '') + name;
descr = desctypes[match[1]] + _(', in ') + titles[match[0]];
objectResults.push([filenames[match[0]], fullname, '#'+fullname, descr]);
}
diff --git a/doc/genindex.html b/doc/genindex.html
index 989ebc4..d421a66 100644
--- a/doc/genindex.html
+++ b/doc/genindex.html
@@ -5,13 +5,13 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Index — CAS v0.14 documentation</title>
+ <title>Index — cas v0.15 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '0.14',
+ VERSION: '0.15',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -19,7 +19,7 @@
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="CAS v0.14 documentation" href="index.html" />
+ <link rel="top" title="cas v0.15 documentation" href="index.html" />
</head>
<body>
<div class="related">
@@ -28,7 +28,7 @@
<li class="right" style="margin-right: 10px">
<a href="" title="General Index"
accesskey="I">index</a></li>
- <li><a href="index.html">CAS v0.14 documentation</a> »</li>
+ <li><a href="index.html">cas v0.15 documentation</a> »</li>
</ul>
</div>
@@ -78,12 +78,12 @@
<li class="right" style="margin-right: 10px">
<a href="" title="General Index"
>index</a></li>
- <li><a href="index.html">CAS v0.14 documentation</a> »</li>
+ <li><a href="index.html">cas v0.15 documentation</a> »</li>
</ul>
</div>
<div class="footer">
© Copyright 2009, Adam Stokes.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.3.
</div>
</body>
</html>
\ No newline at end of file
diff --git a/doc/index.html b/doc/index.html
index 07be194..36220de 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -5,13 +5,13 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Core Analysis System — CAS v0.14 documentation</title>
+ <title>Core Analysis System — cas v0.15 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '0.14',
+ VERSION: '0.15',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -19,7 +19,7 @@
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="CAS v0.14 documentation" href="" />
+ <link rel="top" title="cas v0.15 documentation" href="" />
</head>
<body>
<div class="related">
@@ -28,7 +28,7 @@
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
- <li><a href="">CAS v0.14 documentation</a> »</li>
+ <li><a href="">cas v0.15 documentation</a> »</li>
</ul>
</div>
@@ -45,9 +45,9 @@
<tbody valign="top">
<tr class="field"><th class="field-name">Author:</th><td class="field-body">Adam Stokes</td>
</tr>
-<tr class="field"><th class="field-name">Release:</th><td class="field-body">0.14</td>
+<tr class="field"><th class="field-name">Release:</th><td class="field-body">0.15</td>
</tr>
-<tr class="field"><th class="field-name">Date:</th><td class="field-body">May 06, 2009</td>
+<tr class="field"><th class="field-name">Date:</th><td class="field-body">October 15, 2009</td>
</tr>
</tbody>
</table>
@@ -66,11 +66,6 @@ types to core dumps are automatically detected and processed.</p>
Fedora 9 or later (this would include RHEL 4/5) the EPEL repo needs to be
installed. Visit <a class="reference external" href="https://fedoraproject.org/wiki/EPEL">EPEL</a> to enable
this repository.</p>
-<p>Optionally install <a class="reference external" href="http://fedorahosted.org/func">Func</a>
-for automatic processing on other architecture specific systems. This
-can easily be installed via <cite>yum</cite>:</p>
-<div class="highlight-python"><pre>$ yum install func</pre>
-</div>
<p>The amount of storage needed can be determined base on the following
information:</p>
<ul class="simple">
@@ -89,19 +84,22 @@ in order for analyzation to work properly.</p>
The overall contents of this file is shown below, further down we will break up
each section and describe its meaning:</p>
<div class="highlight-python"><pre>[settings]
+casuser=root
kernels=/mnt/kernels
rpmFilter=.*kerne.+-debuginfo-[0-9].*\.rpm
debugs=/cores/debugs
debugLevel=DEBUG
workDirectory=/cores/processed
-mailServer=mail.example.com
+smtphost=mail.example.com
database=/var/db/cas/cas.db
[maintenance]
purgeLimit=90
autoPurge=Yes
[advanced]
-# crash_32=/usr/local/i386/crash</pre>
+# crash_32=/usr/local/i386/crash
+# buffersize=None</pre>
</div>
+<p><tt class="docutils literal"><span class="pre">casuser</span></tt>: (<strong>Required</strong>) User to run cas, recommended to run as someone other than root.</p>
<p><tt class="docutils literal"><span class="pre">kernels</span></tt>: (<strong>Required</strong>) Describes the location of where kernel-debuginfo packages are to be
stored. This can range anywhere from an nfs mount, samba share, local disk or
any other type of media the cas server can access.</p>
@@ -116,7 +114,7 @@ Currently the only accepted values are <tt class="docutils literal"><span class=
<p><tt class="docutils literal"><span class="pre">workDirectory</span></tt>: (<strong>Required</strong>) Defines where all processed cores will be placed. This mount
point will need to have the most storage assigned to it. Depending on how many
cores are processed in a given timeframe this area will fill up quickly.</p>
-<p><tt class="docutils literal"><span class="pre">mailServer</span></tt>: If wanting output of CAS processing email to a certain address
+<p><tt class="docutils literal"><span class="pre">smtphost</span></tt>: If wanting output of CAS processing email to a certain address
this directive needs to be set. <tt class="docutils literal"><span class="pre">Note</span></tt> that the mail server should not
require smtp authentication.</p>
<p><tt class="docutils literal"><span class="pre">database</span></tt>: (<strong>Required</strong>) Define where the sqlite database will reside.</p>
@@ -128,6 +126,9 @@ each run.</p>
version of crash is installed this directive can be set to the crash binary
and CAS will automatically process x86 cores on a x86_64 machine. <tt class="docutils literal"><span class="pre">Note</span></tt> this
is only available if the CAS server is a x86_64 machine.</p>
+<p><tt class="docutils literal"><span class="pre">buffersize</span></tt>: Extend the read buffer when analyzing a core for a timestamp.
+<tt class="docutils literal"><span class="pre">Note</span></tt> this is normally needed for itanium cores, otherwise, the default is
+fine.</p>
</div>
</div>
<div class="section" id="setup-execution">
@@ -152,18 +153,20 @@ to a different location.</p>
<p>Altering the configuration to reflect the above assumptions would show the
following:</p>
<div class="highlight-python"><pre>[settings]
+casuser=cas
kernels=/mnt/kernels
rpmFilter=.*kerne.+-debuginfo-[0-9].*\.rpm
debugs=/tmp
debugLevel=DEBUG
workDirectory=/cores
-mailServer=mail.cas-server.com
+smtphost=mail.cas-server.com
database=/var/db/cas/cas.db
[maintenance]
purgeLimit=90
autoPurge=Yes
[advanced]
-crash_32=/usr/local/i386/crash</pre>
+crash_32=/usr/local/i386/crash
+#buffer=None</pre>
</div>
<p>Now that the configuration file is altered and <tt class="docutils literal"><span class="pre">/mnt/kernels</span></tt> should be populated
with kernel-debuginfo rpm’s the next section will describe running CAS.</p>
@@ -174,9 +177,19 @@ with kernel-debuginfo rpm’s the next section will describe running CAS.</p
a database for all the data gathered from the kernel-debuginfo packages.:</p>
<div class="highlight-python"><pre>$ cas-admin -b</pre>
</div>
-<p>If <tt class="docutils literal"><span class="pre">Func</span></tt> is installed and several systems are deployed for CAS to use run:</p>
+<p>If several systems are deployed for CAS to use, ssh keys must be setup between the host (CAS) and
+the clients:</p>
+<div class="highlight-python"><pre>(cas-server) $ ssh-keygen -t dsa
+Cas supports passwordless entries at this time.
+(cas-server) $ ssh-copy-id -i ~/.ssh/id_dsa casuser(a)cas-client-system.com</pre>
+</div>
+<p>Once ssh has been setup between systems the following will build the server database:</p>
<div class="highlight-python"><pre>$ cas-admin -s</pre>
</div>
+<p>Please note that in order for cas to function properly it is required that only the cas
+user on the system has only those entries in its ssh hostkey file that are accessible
+with cas. Cas will error with <tt class="docutils literal"><span class="pre">Authentication</span> <span class="pre">Failed</span></tt> and exit cleanly if it runs
+into any system that it can not communicate with.</p>
<p>At this point CAS is configured and looking at the output of CAS help there are
a few options to pass:</p>
<div class="highlight-python"><pre>Usage: cas [opts] args
@@ -414,12 +427,12 @@ no errors.</p>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
- <li><a href="">CAS v0.14 documentation</a> »</li>
+ <li><a href="">cas v0.15 documentation</a> »</li>
</ul>
</div>
<div class="footer">
© Copyright 2009, Adam Stokes.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.3.
</div>
</body>
</html>
\ No newline at end of file
diff --git a/doc/objects.inv b/doc/objects.inv
index 9bf4213..3790431 100644
--- a/doc/objects.inv
+++ b/doc/objects.inv
@@ -1,3 +1,3 @@
# Sphinx inventory version 1
-# Project: CAS
-# Version: 0.14
+# Project: cas
+# Version: 0
diff --git a/doc/search.html b/doc/search.html
index 4acbc32..a4032d2 100644
--- a/doc/search.html
+++ b/doc/search.html
@@ -5,13 +5,13 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Search — CAS v0.14 documentation</title>
+ <title>Search — cas v0.15 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '0.14',
+ VERSION: '0.15',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -20,7 +20,7 @@
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/searchtools.js"></script>
- <link rel="top" title="CAS v0.14 documentation" href="index.html" />
+ <link rel="top" title="cas v0.15 documentation" href="index.html" />
</head>
<body>
<div class="related">
@@ -29,7 +29,7 @@
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
- <li><a href="index.html">CAS v0.14 documentation</a> »</li>
+ <li><a href="index.html">cas v0.15 documentation</a> »</li>
</ul>
</div>
@@ -77,13 +77,13 @@
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
- <li><a href="index.html">CAS v0.14 documentation</a> »</li>
+ <li><a href="index.html">cas v0.15 documentation</a> »</li>
</ul>
</div>
<div class="footer">
© Copyright 2009, Adam Stokes.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.3.
</div>
<script type="text/javascript" src="searchindex.js"></script>
diff --git a/doc/searchindex.js b/doc/searchindex.js
index a1794fc..ae7ddbe 100644
--- a/doc/searchindex.js
+++ b/doc/searchindex.js
@@ -1 +1 @@
-Search.setIndex({desctypes:{},terms:{all:0,mnt:0,snip:0,abil:0,follow:0,disk:0,depend:0,wish:0,do_dlm_lock:0,those:0,aris:0,worth:0,sent:0,r14:0,r15:0,r12:0,r13:0,r10:0,r11:0,than:0,faq:0,ffffffff8010e789:0,vmcore:0,upstream:0,ticket:0,relev:0,administr:0,level:0,die:0,list:0,prepar:0,pleas:0,x86_64:0,core:0,direct:0,pass:0,download:0,further:0,index:[],sub:0,section:0,abl:0,access:0,version:0,autogener:0,gener:0,here:0,address:0,path:0,sinc:0,valu:0,ffffffff80110bf5:0,search:[],rdx:0,amount:0,typic:0,rdi:0,smp_call_function_interrupt:0,chanc:0,"0000010001073f48":0,via:0,prerequisit:0,modul:0,prefer:0,crash_32:0,filenam:0,instal:0,from:0,describ:0,would:0,prove:0,doubl:0,visit:0,two:0,todai:[],next:0,few:0,usr:0,recommend:0,type:0,tell:0,more:0,sort:0,wrapper:0,share:0,ffffffff803e9b80:0,"1tb":0,indic:[],must:0,retriev:0,hous:0,setup:0,work:0,uniqu:0,can:0,root:0,sqlite:0,quickstart:0,tar:0,process:0,smtp:0,accept:0,want:0,occur:0,multipl:0,anoth:0,snippet:0,how:0,error_exit:0,purg:0,opt:0,verifi:0,perspect:0,ffffffff80528000:0,resourc:0,"00000102000a4780":0,clone:0,reflect:0,mai:0,data:0,physic:0,fedora:0,essenti:0,issu:0,inform:0,environ:0,suggest:0,order:0,help:0,over:0,major:0,i386:0,hierarchi:0,paramet:0,"100f57cb030":0,requir:0,mail:0,main:0,alter:0,crash:0,thei:0,python:0,auto:0,overal:0,dai:0,initi:0,"break":0,mention:0,now:0,introduct:0,name:0,edit:0,troubleshoot:0,authent:0,kern:0,easili:0,each:0,debug:0,mean:0,continu:0,happen:0,extract:0,out:0,shown:0,network:0,ffffffff8014cc1d:0,ffffffff8011d191:0,content:0,adapt:0,fffffffffffffffa:0,advanc:0,orig_rax:0,given:0,base:0,releas:0,org:0,ffffffff80110e1d:0,traceback:0,keep:0,vmlinux:0,thing:0,place:0,isn:0,assign:0,first:0,origin:0,rang:0,onc:0,number:0,swapper:0,instruct:0,done:0,messag:0,rflag:0,differ:0,script:0,associ:0,interact:0,system:0,least:0,ffffffff80112058:0,master:0,statement:0,ffffffff8047a0a0:0,"final":0,boil:0,editor:0,option:0,debuginfo:0,tool:0,specifi:0,hassl:0,exactli:0,rsp:0,corefil:0,provid:0,emac:0,structur:0,store:0,stale:0,ani:0,fail:0,have:0,tabl:[],call_function_interrupt:0,"101f3658030":0,rax:0,rsi:0,packag:0,date:0,bz2:0,lib:0,note:0,also:0,build:0,which:0,begin:0,normal:0,previou:0,compress:0,most:0,regular:0,deploi:0,"101f21efb80":0,gather:0,yum:0,determin:0,irq:0,usual:0,show:0,text:0,find:0,current:0,onli:0,locat:0,configur:0,solut:0,state:0,should:0,analyz:0,local:0,variou:0,cvjf:0,express:0,autom:0,repo:0,mainten:0,ellargesmp:0,enabl:0,organ:0,contain:0,where:0,wiki:0,kernel:0,set:0,dump:0,"10001073f48":0,see:0,result:0,arg:0,corrupt:0,subject:0,ffffffffa03183ff:0,detect:0,purgelimit:0,databas:0,someth:0,enough:0,approach:0,email:0,altern:0,assumpt:0,extend:0,cpu_idl:0,default_idl:0,job:0,come:0,tue:0,addit:0,last:0,admin:0,fault:0,etc:0,instanc:0,mani:0,com:0,improp:0,load:0,simpli:0,point:0,"1000107bfb0":0,rpm:0,coredump:0,"101f21efb50":0,mark:0,much:0,popul:0,quickli:0,largesmp:0,anywher:0,try_crashdump:0,"0000000000000e86":0,func:0,present:0,therefor:0,look:0,rbx:0,solid:0,mount:0,rbp:0,defin:0,abov:0,error:0,"101f21efb20":0,ffffffff8047a0b0:0,timefram:0,rip:0,need:0,archiv:0,uncom:0,conf:0,fedorahost:0,sever:0,welcom:[],author:0,media:0,same:0,binari:0,timestamp:0,document:0,complet:0,x86:0,temporari:0,user:0,"500gb":0,engin:0,stack:0,task:0,"10001073e98":0,do_invalid_op:0,exampl:0,command:0,thi:0,filesystem:0,gzip:0,everyth:0,latest:0,identifi:0,execut:0,workdirectori:0,heavili:0,previous:0,samba:0,wed:0,except:0,valid:0,match:0,bin:0,read:0,kmem:0,debuglevel:0,mod:0,"1000107bfa0":0,resid:0,like:0,specif:0,anyon:0,manual:0,resolv:0,server:0,collect:0,necessari:0,either:0,"101f21efb60":0,"101f21efc40":0,output:0,page:[],some:0,back:0,toctre:0,proper:0,tmp:0,mailserv:0,assum:0,ffffffff80529f08:0,exit:0,machin:0,intial:0,who:0,run:0,reach:0,usag:0,repositori:0,memori:0,unfortun:0,primarili:0,within:0,automat:0,down:0,chang:0,start_disk_dump:0,storag:0,your:0,git:0,rcx:0,log:0,wai:0,area:0,support:0,question:0,avail:0,includ:0,suit:0,"var":0,rhel:0,analysi:0,properli:0,form:0,pwd:0,line:0,analyst:0,info:0,made:0,possibl:0,checkout:0,below:0,ffffffff80111c90:0,problem:0,similar:0,epel:0,later:0,creat:0,certain:0,dure:0,gfs_quotad:0,pid:0,incomplet:0,exist:0,file:0,cvzf:0,fill:0,bzip2:0,"00000100f57cb030":0,when:0,other:0,ffffffff8010e7a9:0,you:0,architectur:0,benefici:0,autopurg:0,ffffffff80529fb8:0,stoke:0,sphinx:0,directori:0,descript:0,adam:0,ffffffff8010e81c:0,rpmfilter:0,cpu:0},titles:["Core Analysis System"],modules:{},descrefs:{},filenames:["index"]})
\ No newline at end of file
+Search.setIndex({desctypes:{},terms:{all:0,mnt:0,snip:0,abil:0,follow:0,disk:0,depend:0,wish:0,do_dlm_lock:0,those:0,aris:0,worth:0,sent:0,r14:0,r15:0,r12:0,r13:0,r10:0,r11:0,faq:0,ffffffff8010e789:0,vmcore:0,upstream:0,octob:0,ticket:0,relev:0,administr:0,level:0,die:0,list:0,prepar:0,pleas:0,x86_64:0,core:0,direct:0,pass:0,download:0,further:0,rbp:0,sub:0,section:0,abl:0,access:0,version:0,hostkei:0,autogener:0,gener:0,here:0,address:0,path:0,sinc:0,valu:0,ffffffff80110bf5:0,rdx:0,amount:0,typic:0,rdi:0,smp_call_function_interrupt:0,chanc:0,"0000010001073f48":0,repositori:0,modul:0,prefer:0,crash_32:0,filenam:0,id_dsa:0,instal:0,from:0,describ:0,would:0,memori:0,doubl:0,visit:0,two:0,next:0,few:0,usr:0,recommend:0,type:0,tell:0,more:0,sort:0,wrapper:0,share:0,ffffffff803e9b80:0,"1tb":0,must:0,none:0,retriev:0,hous:0,setup:0,work:0,uniqu:0,can:0,root:0,sqlite:0,tar:0,process:0,smtp:0,accept:0,want:0,occur:0,multipl:0,anoth:0,snippet:0,how:0,error_exit:0,purg:0,opt:0,verifi:0,perspect:0,ffffffff80528000:0,resourc:0,passwordless:0,"00000102000a4780":0,clone:0,reflect:0,date:0,data:0,physic:0,essenti:0,issu:0,inform:0,environ:0,suggest:0,order:0,help:0,over:0,major:0,i386:0,hierarchi:0,paramet:0,"100f57cb030":0,requir:0,mail:0,main:0,alter:0,crash:0,thei:0,python:0,auto:0,overal:0,dai:0,initi:0,"break":0,mention:0,itanium:0,now:0,introduct:0,name:0,edit:0,troubleshoot:0,authent:0,kern:0,each:0,debug:0,mean:0,mai:0,continu:0,happen:0,extract:0,buffers:0,out:0,shown:0,network:0,ffffffff8014cc1d:0,ffffffff8011d191:0,content:0,fffffffffffffffa:0,dsa:0,advanc:0,orig_rax:0,given:0,base:0,releas:0,org:0,ffffffff80110e1d:0,traceback:0,keep:0,vmlinux:0,thing:0,yum:0,isn:0,assign:0,first:0,origin:0,rang:0,onc:0,number:0,swapper:0,instruct:0,done:0,least:0,rflag:0,differ:0,script:0,associ:0,interact:0,system:0,messag:0,ffffffff80112058:0,statement:0,ffffffff8047a0a0:0,"final":0,boil:0,editor:0,option:0,debuginfo:0,tool:0,copi:0,specifi:0,hassl:0,exactli:0,rsp:0,than:0,provid:0,emac:0,structur:0,store:0,stale:0,"function":0,ani:0,fail:0,have:0,call_function_interrupt:0,"101f3658030":0,rax:0,rsi:0,packag:0,engin:0,bz2:0,lib:0,note:0,also:0,client:0,build:0,which:0,begin:0,normal:0,buffer:0,previou:0,compress:0,most:0,regular:0,deploi:0,"101f21efb80":0,gather:0,place:0,determin:0,irq:0,usual:0,show:0,text:0,fine:0,find:0,current:0,onli:0,locat:0,configur:0,solut:0,state:0,should:0,analyz:0,local:0,variou:0,cvjf:0,express:0,autom:0,repo:0,mainten:0,ssh:0,ellargesmp:0,enabl:0,organ:0,cleanli:0,contain:0,where:0,wiki:0,kernel:0,set:0,dump:0,"10001073f48":0,see:0,result:0,arg:0,corrupt:0,subject:0,ffffffffa03183ff:0,detect:0,purgelimit:0,kei:0,databas:0,someth:0,enough:0,between:0,approach:0,email:0,altern:0,assumpt:0,extend:0,cpu_idl:0,default_idl:0,job:0,come:0,tue:0,addit:0,last:0,admin:0,fault:0,etc:0,instanc:0,mani:0,com:0,improp:0,load:0,simpli:0,point:0,"1000107bfb0":0,rpm:0,casus:0,coredump:0,been:0,mark:0,much:0,popul:0,quickli:0,largesmp:0,anywher:0,try_crashdump:0,"0000000000000e86":0,present:0,therefor:0,look:0,rbx:0,solid:0,mount:0,keygen:0,defin:0,abov:0,error:0,"101f21efb20":0,ffffffff8047a0b0:0,timefram:0,rip:0,need:0,archiv:0,uncom:0,conf:0,fedorahost:0,sever:0,fedora:0,author:0,media:0,same:0,binari:0,timestamp:0,x86:0,someon:0,temporari:0,user:0,"500gb":0,stack:0,task:0,"10001073e98":0,entri:0,do_invalid_op:0,exampl:0,command:0,thi:0,filesystem:0,gzip:0,everyth:0,latest:0,identifi:0,execut:0,workdirectori:0,heavili:0,previous:0,samba:0,except:0,valid:0,match:0,bin:0,read:0,kmem:0,debuglevel:0,smtphost:0,mod:0,"1000107bfa0":0,resid:0,like:0,specif:0,anyon:0,manual:0,resolv:0,server:0,collect:0,necessari:0,either:0,"101f21efb60":0,"101f21efc40":0,output:0,some:0,back:0,gfs_quotad:0,proper:0,tmp:0,assum:0,ffffffff80529f08:0,exit:0,machin:0,intial:0,who:0,run:0,reach:0,usag:0,host:0,prerequisit:0,prove:0,unfortun:0,primarili:0,within:0,automat:0,down:0,"101f21efb50":0,chang:0,start_disk_dump:0,storag:0,git:0,rcx:0,log:0,wai:0,area:0,support:0,question:0,avail:0,includ:0,suit:0,"var":0,rhel:0,analysi:0,properli:0,form:0,pwd:0,line:0,analyst:0,info:0,commun:0,made:0,possibl:0,"default":0,checkout:0,below:0,ffffffff80111c90:0,otherwis:0,problem:0,similar:0,epel:0,later:0,certain:0,dure:0,pid:0,incomplet:0,exist:0,file:0,cvzf:0,fill:0,bzip2:0,"00000100f57cb030":0,when:0,other:0,ffffffff8010e7a9:0,architectur:0,corefil:0,benefici:0,autopurg:0,ffffffff80529fb8:0,stoke:0,directori:0,descript:0,adam:0,time:0,ffffffff8010e81c:0,rpmfilter:0,cpu:0},titles:["Core Analysis System"],modules:{},descrefs:{},filenames:["index"]})
\ No newline at end of file
14 years, 6 months
web/footer.html web/header.html web/index.html web/job_detail.html web/jobs.html web/job_submit.html web/media
by Adam Stokes
dev/null |binary
web/footer.html | 5 ----
web/header.html | 18 ---------------
web/index.html | 37 --------------------------------
web/job_detail.html | 27 -----------------------
web/job_submit.html | 42 -------------------------------------
web/jobs.html | 34 ------------------------------
web/media/css/cas-web.css | 52 ----------------------------------------------
8 files changed, 215 deletions(-)
New commits:
commit b47ff348aa8fdb369314b8e98c4a5b8e4a73f1e5
Author: adam stokes <uzr(a)jak.rebo>
Date: Thu Oct 15 09:34:49 2009 -0400
- altering web
diff --git a/web/footer.html b/web/footer.html
deleted file mode 100644
index da211cc..0000000
--- a/web/footer.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<div id="footer">
-cas_web_ui © 2007-2009 Adam Stokes
-</div>
-</body>
-</html>
diff --git a/web/header.html b/web/header.html
deleted file mode 100644
index 43a5b8c..0000000
--- a/web/header.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8">
- <link rel="stylesheet" href="/media/css/cas-web.css" type="text/css" media="screen" />
-
- <title><% $title %></title>
-</head>
-<body>
-<div id="header">
- <p><a href="/"><img src="/media/img/cas_logo.png"></a></p>
- :// <a href="/">go home</a>, <a href="/jobs.html">jobs</a>
-</div>
-
-<%init>
-my $title="cas-web-ui";
-</%init>
-
diff --git a/web/index.html b/web/index.html
deleted file mode 100644
index f59d914..0000000
--- a/web/index.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<& header.html &>
-<div id="content">
-<h3>Core submission<h3>
-<div id="form_submit">
- <form method="POST" action="job_submit.html" enctype="multipart/form-data">
- <table>
- <tr>
- <th> </th><th>Complete below form</th>
- </tr>
- <tr>
- <td>Job Identifier</td>
- <td><input type="text" size="25" name="form_identifier" />
- </tr>
- <tr>
- <td>Submitter</td>
- <td><input type="text" size="25" name="form_submitter" />
- </tr>
- <tr>
- <td colspan="2" style="background-color: red; color: white;">Please choose a method for providing the core file</td>
- </tr>
- <tr>
- <td>Upload a File</td>
- <td><input type="file" size="45" name="form_file"/></td>
- </tr>
- <tr>
- <td>HTTP or FTP URL</td>
- <td><input type="text" size="45" name="form_url"/></td>
- </tr>
- <tr>
- <td colspan="2"><input type="submit" value="Process Job" /></td>
- </tr>
- </table>
-
- </form>
-</div>
-</div>
-<& footer.html &>
diff --git a/web/job_detail.html b/web/job_detail.html
deleted file mode 100644
index eb50606..0000000
--- a/web/job_detail.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!-- mason -->
-<& header.html &>
-<div id="content">
-<h3>Job Detail for <% $work_dir %>/<% $view_log %></h3>
-<ul>
-% while (<DATA>) {
-<li><% $_ %></li>
-% }
-</ul>
-<& footer.html &>
-
-<%init>
-use Data::Dumper;
-
-my $work_dir;
-open DATA, "</etc/cas.conf" or die $!;
-while (<DATA>) {
- if (/^workDirectory=(.*)/) {
- $work_dir = $1;
- }
-}
-open DATA, "<$work_dir/$view_log" or die $!;
-</%init>
-
-<%args>
-$view_log
-</%args>
diff --git a/web/job_submit.html b/web/job_submit.html
deleted file mode 100644
index d1a33bc..0000000
--- a/web/job_submit.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!-- mason -->
-<& header.html &>
-<div id="content">
-<h3>Form submitted</h3>
-</div>
-
-<& footer.html &>
-<%init>
-use File::Path;
-
-# create path if doesn't exist
-if ($form_identifier && ! -f "/cores/$form_identifier") {
- mkpath("/cores/$form_identifier", {verbose => 1});
-}
-
-# File uploads
-if ($form_file) {
- my $query = $m->cgi_object;
-
- # get a filehandle for the uploaded file
- my $fh = $query->upload('form_file');
-
- # setup file
- open FORMFILE, '>>/tmp/formfile';
-
- # print out the contents of the uploaded file
- while (<$fh>) {
- print FORMFILE $_;
- }
- close($fh);
-
- close FORMFILE;
-}
-</%init>
-
-<%args>
-$form_identifier
-$form_file
-$form_submitter
-$form_url
-</%args>
-
diff --git a/web/jobs.html b/web/jobs.html
deleted file mode 100644
index b6846ff..0000000
--- a/web/jobs.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!-- mason -->
-<& header.html &>
-<div id="content">
-<h3>Jobs</h3>
-<table>
-<tr>
-<th> </th>
-<th>id</th><th>identifier</th><th>timestamp</th><th>email</th>
-</tr>
-% foreach my $item (@{$data}) {
-% my ($id, $identify, $timestamp, $email) = @{$item};
-% if (-f "/cores/$identify") {
- <tr>
- <td><a href="/job_detail.html?view_log=<% $identify %>/<% $timestamp %>/<% $identify %>.log">view log</a></td>
- <td><% $id %></td>
- <td><% $identify %></td>
- <td><% $timestamp %></td>
- <td><% $email %></td>
- </tr>
-% }
-% }
-</table>
-</div>
-<& footer.html &>
-
-<%init>
-use DBI;
-my $dbh = DBI->connect("dbi:SQLite:dbname=/var/db/cas/cas.db","","");
-
-# query all jobs
-my $sth = $dbh->prepare("SELECT * FROM jobs");
-$sth->execute();
-my $data = $sth->fetchall_arrayref;
-</%init>
diff --git a/web/media/css/cas-web.css b/web/media/css/cas-web.css
deleted file mode 100644
index d6880f3..0000000
--- a/web/media/css/cas-web.css
+++ /dev/null
@@ -1,52 +0,0 @@
-/* GLOBAL ATTRIBUTES */
-body {
- font-family: sans-serif;
- margin: 0;
- padding: 5px;
-}
-
-h1 {
- padding: 0;
- margin: 0;
-}
-
-td, th {
- padding: 5px;
- text-align: left;
- vertical-align: middle;
-}
-
-img {
- border: 0;
-}
-
-/* CUSTOM */
-
-#header {
- font-size: small;
- padding: 5px;
- width: 600px;
- margin-left: auto;
- margin-right: auto;
-}
-
-#content {
- font-size: small;
- width: 600px;
- margin-left: auto;
- margin-right: auto;
-}
-
-#footer {
- font-size: small;
- padding: 5px;
- width: 600px;
- margin-left: auto;
- margin-right: auto;
-}
-
-/* FORM ELEMENTS */
-#form_submit {
- font-size: small;
- font-style: normal;
-}
diff --git a/web/media/img/cas_logo.png b/web/media/img/cas_logo.png
deleted file mode 100644
index 39e2302..0000000
Binary files a/web/media/img/cas_logo.png and /dev/null differ
14 years, 6 months
doc/index.rst
by Adam Stokes
doc/index.rst | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
New commits:
commit 0c456d360c4cecaf757bff18ed7a1f4c53a90a14
Author: adam stokes <uzr(a)jak.rebo>
Date: Thu Oct 15 09:34:13 2009 -0400
- doc update
diff --git a/doc/index.rst b/doc/index.rst
index f81ca75..dfd0563 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -162,9 +162,21 @@ a database for all the data gathered from the kernel-debuginfo packages.::
$ cas-admin -b
-If several systems are deployed for CAS to use run::
+If several systems are deployed for CAS to use, ssh keys must be setup between the host (CAS) and
+the clients::
- $ cas-admin -s -f line_delimited_server_list.txt
+ (cas-server) $ ssh-keygen -t dsa
+ Cas supports passwordless entries at this time.
+ (cas-server) $ ssh-copy-id -i ~/.ssh/id_dsa casuser(a)cas-client-system.com
+
+Once ssh has been setup between systems the following will build the server database::
+
+ $ cas-admin -s
+
+Please note that in order for cas to function properly it is required that only the cas
+user on the system has only those entries in its ssh hostkey file that are accessible
+with cas. Cas will error with ``Authentication Failed`` and exit cleanly if it runs
+into any system that it can not communicate with.
At this point CAS is configured and looking at the output of CAS help there are
a few options to pass::
14 years, 6 months
cas-admin
by Adam Stokes
cas-admin | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit 6acd58aa6f0ba5d50bafedb13c75c973fad18725
Author: adam stokes <uzr(a)jak.rebo>
Date: Mon Oct 12 12:01:58 2009 -0400
- sysexit on failed server in host file
diff --git a/cas-admin b/cas-admin
index 628ce89..ec98ead 100755
--- a/cas-admin
+++ b/cas-admin
@@ -124,7 +124,7 @@ class CasServerHandler(object):
try:
ssh_obj.connect(server, port=port, username=settings["CASUSER"])
except paramiko.AuthenticationException, e:
- self.casLog.debug("Failed to connect to %s: %s" % (server,e))
+ raise SystemExit(self.casLog.debug("Failed to connect to %s: %s" % (server,e)))
stdin, stdout, stderr = ssh_obj.exec_command("/bin/uname -m")
if stderr:
self.casLog.debug(stderr)
14 years, 6 months