如何以超级用户身份登录并执行脚本

时间:2016-08-23 10:20:14

标签: linux bash shell hadoop hdfs

我有一个类似下面的脚本:

脚本名称: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并执行脚本。 请建议如何实施它。

3 个答案:

答案 0 :(得分:1)

在while循环之前添加su hdfs,在脚本的最后一个命令中添加exit

要添加sh create_and_set_quota_alternative.sh,请使用/bin/sh来调用脚本,但第一行表示应将其称为bash create_and_set_quota_alternative.sh。并不总是链接到bash。

答案 1 :(得分:0)

不幸的是,我没有sudo访问权限以及hdfs密码。有人建议我这样做:

!/斌/庆典

而IFS = $&#39; \ t&#39;读-r -a myOptions

DO

echo&#34;目录:$ {myOptions [0]}&#34;

echo&#34;所有权:$ {myOptions [1]}&#34;

echo&#34;权限:$ {myOptions [2]}&#34;

echo&#34; quota:$ {myOptions [3]}&#34;

sudo su hdfs -c&#34; hdfs dfs -mkdir $ {myOptions [0]}&#34;

sudo su hdfs -c&#34; hdfs dfs -chown $ {myOptions [1]} $ {myOptions [0]}&#34;

sudo su hdfs -c&#34; hdfs dfs -chmod $ {myOptions [2]} $ {myOptions [0]}&#34;

sudo su hdfs -c&#34; hdfs dfsadmin -setSpaceQuota $ {myOptions [3]} $ {myOptions [0]}&#34;

完成&LT; MYFILE.TXT

myFile.txt / usr / t1 hive:hive 776 1T

/ usr / t2 hdfs:hdfs 775 100G

但它也给出了如下错误:

sh create_and_set_quota_alternative.sh

目录:/ usr / t1

所有权:hive:hive

权限:776

配额:1T

错误:未设置JAVA_HOME且无法找到。

错误:未设置JAVA_HOME且无法找到。

错误:未设置JAVA_HOME且无法找到。

错误:未设置JAVA_HOME且无法找到。

目录:/ usr / t2

所有权:hdfs:hdfs

权限:775

配额:100G

错误:未设置JAVA_HOME且无法找到。

错误:未设置JAVA_HOME且无法找到。

错误:未设置JAVA_HOME且无法找到。

错误:未设置JAVA_HOME且无法找到。

答案 2 :(得分:0)

只需将脚本作为

运行
sudo -u hdfs sh create_and_set_quota_alternative.sh