Mercurial > repos > david-hoover > local_export_tools
comparison import_local_file.sh @ 0:544ad95f0e22
Uploaded
author | david-hoover |
---|---|
date | Tue, 28 Feb 2012 12:09:49 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:544ad95f0e22 |
---|---|
1 ### | |
2 ### The shell script: import_local.sh | |
3 ### | |
4 ### The script copies the source file (param 1) | |
5 ### to the destination file (param 2, which is galaxy's dataset_NNNNN.dat). | |
6 ### | |
7 ### The extra code tries to make it as safe as possible, allowing imports only | |
8 ### from limited areas. | |
9 ### | |
10 ### The script can be changed from copying to linking - would be even faster. | |
11 ### | |
12 ### cpx is a C executable that copies a file from a source to a destination | |
13 ### only if the source file is readable by the user given in the third arg. | |
14 ### cpx must be setuid root, so be careful who has access to it! It can also | |
15 ### be allowed using sudo, if you know how to do it. | |
16 #!/bin/sh | |
17 | |
18 INPUT="$1" | |
19 OUTPUT="$2" | |
20 EMAIL="$3" | |
21 USER=`echo $EMAIL | sed -e 's#@.*##'` | |
22 | |
23 if [ -z "$OUTPUT" ]; then | |
24 echo "Usage: $0 [INPUT] [OUTPUT]" >&2 | |
25 exit 1 | |
26 fi | |
27 | |
28 # Filter any unwanted directories | |
29 | |
30 if [[ `echo $INPUT | grep -c ^/data/` -lt 1 ]] && [[ `echo $INPUT | grep -c ^/home/` -lt 1 ]] ; then | |
31 echo "Error: \"$INPUT\" is not allowed" >&2 | |
32 exit 1 | |
33 fi | |
34 | |
35 # Do the deed | |
36 cpx $INPUT $OUTPUT "$USER" | |
37 if [ $? != 0 ]; then | |
38 echo "Error: $USER failed to copy \"$INPUT\"" >&2 | |
39 exit 1 | |
40 fi | |
41 | |
42 echo "File \"$INPUT\" imported" | |
43 | |
44 exit 0 | |
45 | |
46 ### | |
47 ### | |
48 ### | |
49 |