2016-08-23 68 views
0

我有一个脚本类似下面:如何登录为超级用户并执行脚本

脚本的名称:create_and_set_quota_alternative.sh

#!/bin/bash 



while IFS=$'\t' read -r -a myOptions 

do 

echo "directory: ${myOptions[0]}" 

echo "ownership: ${myOptions[1]}" 

echo "permissions: ${myOptions[2]}" 

echo "quota: ${myOptions[3]}" 


    hdfs dfs -mkdir ${myOptions[0]} 

    hdfs dfs -chown ${myOptions[1]} ${myOptions[0]} 

    hdfs dfs -chmod ${myOptions[2]} ${myOptions[0]} 

    hdfs dfsadmin -setSpaceQuota ${myOptions[3]} ${myOptions[0]} 

done < myFile.txt 

MYFILE.TXT

/usr/t1 hive:hive  776  1T 

/usr/t2 hdfs:hdfs  775  100G 

现在我想以超级用户身份登录并执行脚本。 在我的情况下超级用户是hdfs。 我希望每当我运行命令sh create_and_set_quota_alternative.sh时,它会以hdfs超级用户的身份登录并执行脚本。 请建议如何实施它。

+1

推荐双引号一样'变量 “$ {myOptions [0]}”'避免分词。 – sjsam

回答

1

在while while循环前添加su hdfs,并将exit作为脚本的最后一个命令。

要添加sh create_and_set_quota_alternative.sh调用脚本/bin/sh,但顶行说它应该被称为bash create_and_set_quota_alternative.sh。不总是sh链接到bash。

0

不幸的是我没有sudo访问以及hdfs密码。有人建议我做如下:

/斌/庆典

而IFS = $ '\ t' 读-r -a myOptions

回声“目录:$ { myOptions [0]}”

回声 “所有权:$ {myOptions [1]}”

回声 “权限:$ {myOptions [2]}”

回声 “配额:$ {myOptions [3]}”

须藤苏HDFS -c “HDFS DFS -mkdir $ {myOptions [0]}”

须藤苏HDFS -c“HDFS DFS -chown $ {myOptions [1]} $ {myOptions [0]}”

须藤苏HDFS -c “HDFS DFS -chmod $ {myOptions [2]} $ {myOptions [0]}”

须藤苏hdfs -c“hdfs dfsadmin -setSpaceQuota $ {myOptions [3]} $ {myOptions [0]}”

done < myFile.txt

MYFILE.TXT在/ usr/T1蜂房:蜂房776 1T

在/ usr/T2 HDFS:HDFS 775 100G

但它也给错误如下:

SH create_and_set_quota_alternative。SH

目录:在/ usr/T1

所有权:蜂房:蜂房

权限:776

配额:1T

错误:JAVA_HOME没有设置,无法找到。

错误:未设置JAVA_HOME并找不到。

错误:未设置JAVA_HOME并找不到。

错误:未设置JAVA_HOME并找不到。

目录:在/ usr/T2

所有权:HDFS:HDFS

权限:775

配额:100G

错误:JAVA_HOME没有设置,不能被发现。

错误:未设置JAVA_HOME并找不到。

错误:未设置JAVA_HOME并找不到。

错误:未设置JAVA_HOME并找不到。

+0

你不能在使用Bash特性的脚本上使用'sh'。投票结束重复。 – tripleee

0

只要运行脚本

sudo -u hdfs sh create_and_set_quota_alternative.sh 
相关问题