124fe280 |
1 | #!/bin/sh |
2 | ############################################################################# |
3 | # alifs - a front-end shell for CASTOR and SHIFT |
4 | ############################################################################# |
5 | # |
6 | # modification history |
7 | # $Log$ |
8 | # |
9 | # SYNOPSIS |
10 | # alifs <command> |
11 | # |
12 | # DESCRIPTION |
13 | # This is an interface script to underlying mass storage manager. At present it supports CASTOR on RH6.1 and offers some basic Unix like commands: |
14 | # |
15 | # o) list directory |
16 | # alifs ls [-cdilRTu] [--class] [--comment] path |
17 | # |
18 | # o) move (rename) file or directory |
19 | # alifs mv oldname newname... |
20 | # |
21 | # o) remove file or directory |
22 | # alifs rm [-f] [-i] [-r] dirname... |
23 | # |
24 | # o) create directory |
25 | # alifs mkdir [-m absolute_mode] [-p] dirname... |
26 | # |
27 | # CASTOR file system is accessible via RFIO (root must be configured configured with --enable-rfio switch and linked with appropriate libshift.a library). It provides experiment topl level directory (/castor/cern.ch/alice) and user directories following the AFS naming scheeme (like /castor/cern.ch/user/b/buncic). |
28 | #For more info on CASTOR commands, see related man pages (nsls, nsrename, nsrm, nsmkdir). |
29 | # |
30 | # |
31 | # AUTHOR: |
32 | # Predrag Buncic, e-mail: Predrag.Buncic@cern.ch |
33 | # |
34 | # CREATION DATE: |
35 | # 15-Feb-2001 |
36 | #C< |
37 | ########################################################################### |
38 | Configure() |
39 | { |
40 | if [ "$CASTOR_USER_POOL" = "" ] |
41 | then |
42 | CASTOR_USER_POOL=$STAGE_POOL |
43 | fi |
44 | |
45 | if [ "$CASTOR_BIN" = "" ] |
46 | then |
47 | case `uname` in |
48 | Linux) |
49 | CASTOR_BIN=/afs/cern.ch/asis/packages/CASTOR/castor-1.3.1.1/i386_redhat61/usr.local/bin |
50 | EXEC_SHELL=/bin/sh |
51 | ;; |
52 | *) |
53 | ;; |
54 | esac |
55 | fi |
56 | |
57 | if [ ! -d $CASTOR_BIN ] |
58 | then |
59 | printf "CASTOR is not supported on this platform.\n" |
60 | exit 255 |
61 | fi |
62 | |
63 | if [ "$EXEC_SHELL" = "" ] |
64 | then |
65 | EXEC_SHELL=bin/sh |
66 | for shell in bash zsh ksh |
67 | do |
68 | for dir in /bin /usr/bin /usr/local/bin |
69 | do |
70 | if [ -x $dir/$shell ] |
71 | then |
72 | EXEC_SHELL=$dir/$shell |
73 | break 2 |
74 | fi |
75 | done |
76 | done |
77 | export EXEC_SHELL |
78 | exec $EXEC_SHELL -norc -noprofile $0 $* |
79 | fi |
80 | } |
81 | ########################################################################### |
82 | ALIFS::Usage() |
83 | { |
84 | printf "Usage: alifs <command [options]>\n" |
85 | exit |
86 | } |
87 | ########################################################################### |
88 | ALIFS::Makeman() |
89 | ########################################################################### |
90 | { |
91 | mandir=../man/man4 |
92 | ./mangen -n tool $0 |
93 | if [ $? -eq 0 ] |
94 | then |
95 | [ ! -d $mandir ] && mkdir -p $mandir |
96 | mv `basename $0`.? $mandir |
97 | exit |
98 | fi |
99 | } |
100 | ########################################################################### |
101 | ALIFS::ls() |
102 | { |
103 | $CASTOR_BIN/nsls $* |
104 | } |
105 | ########################################################################### |
106 | ALIFS::mkdir() |
107 | { |
108 | $CASTOR_BIN/nsmkdir $* |
109 | } |
110 | ########################################################################### |
111 | ALIFS::mv() |
112 | { |
113 | $CASTOR_BIN/nsrename $* |
114 | } |
115 | ########################################################################### |
116 | ALIFS::rm() |
117 | { |
118 | $CASTOR_BIN/nsrm $* |
119 | } |
120 | ########################################################################### |
121 | Configure $* |
122 | ########################################################################### |
123 | ALIFS() |
124 | { |
125 | cmd=$1; shift 1 |
126 | |
127 | case `type -t ALIFS::$cmd` in |
128 | function) |
129 | ALIFS::$cmd $* |
130 | ;; |
131 | *) |
132 | ALIFS::Usage; |
133 | ;; |
134 | esac |
135 | |
136 | exit |
137 | } |
138 | ########################################################################### |
139 | ########################################################################### |
140 | |
141 | for param in $* |
142 | do |
143 | case $param in |
144 | -trace) |
145 | shift 1 |
146 | set -vx |
147 | ;; |
148 | -echo) |
149 | shift 1 |
150 | ECHO="echo " |
151 | ;; |
152 | -makeman) |
153 | shift 1 |
154 | ALIFS::Makeman |
155 | ;; |
156 | -p) |
157 | shift 1 |
158 | POOL=$1; shift 1 |
159 | ;; |
160 | *) |
161 | ALIFS $* |
162 | ;; |
163 | esac |
164 | done |
165 | |
166 | |