带有需要 sudo 命令的 Cron
Cron with command requiring sudo
如果我需要将我的 sudo 密码放入命令中,我可以选择什么来制作脚本?
我正在导出 fsimage 并希望定期进行。它可能是我帐户中的 运行,但理想情况下,我想创建一个专门用于进行这些导出的用户。
我想远离使用 root cron 并使用更安全的方式来执行此操作
整个命令如下所示:
sudo ssh czmorchr 'hdfs oiv -p Delimited -i $(ls -t /dfs/nn/current/fsimage_* | grep -v md5 |
head -1) -o /dev/stdout 2>/dev/null' | grep -v "/.Trash/" |sed -e 's/\r/\r/g' | awk 'BEGIN
{ FS="\t"; OFS="\t" } [=10=] ! ~ /_impala_insert_staging/ && ([=10=] ~ /^\/user\/hive\/warehouse\/cz_prd/ ||
[=10=] ~ /^\/user\/hive\/warehouse\/cz_tst/) { split(,a,"/"); db=a[5]; table=a[6]; gsub(".db$", "", table); }
db && ~ /^d/ {par=""; for(i=7;i<=length(a);i++) pa r=par"/"a[i] } db && !~ /^d/
{ par=""; for(i=7;i<=length(a) - 1;i++) par=par"/"a[i]; file=a[length(a)] } NR > 1 { print db,table, par, file, [=10=] }' |
hadoop fs -put -f - /user/hive/warehouse/cz_prd_mon_ma.db/hive_warehouse_files/fsim age.tsv
在不输入密码的情况下像 sudo 一样做一些事情,有一种不安全的方式,比如
echo ubuntu | sudo -S ls
我在这里使用 ubuntu 用户和 ubuntu 密码授予 ls 命令。
如您所见,通过管道将密码传递给 sudo -S 有效。
另外你需要让用户sudoer
这是一个例子 https://askubuntu.com/questions/7477/how-can-i-add-a-new-user-as-sudoer-using-the-command-line.
我能够使用 setfacl 命令解决这个问题。 (上下文:)我在 HDFS 中设置了另一个文件夹,其中备用节点应转储其 fsimages。然后我使用了这个命令,之后,我能够 运行 上面的脚本没有 sudo 并且在 crontab 中。
setfacl -m u:hdfs:rwx /home/user_name/fsimage-dump/namenode
如果我需要将我的 sudo 密码放入命令中,我可以选择什么来制作脚本?
我正在导出 fsimage 并希望定期进行。它可能是我帐户中的 运行,但理想情况下,我想创建一个专门用于进行这些导出的用户。
我想远离使用 root cron 并使用更安全的方式来执行此操作
整个命令如下所示:
sudo ssh czmorchr 'hdfs oiv -p Delimited -i $(ls -t /dfs/nn/current/fsimage_* | grep -v md5 |
head -1) -o /dev/stdout 2>/dev/null' | grep -v "/.Trash/" |sed -e 's/\r/\r/g' | awk 'BEGIN
{ FS="\t"; OFS="\t" } [=10=] ! ~ /_impala_insert_staging/ && ([=10=] ~ /^\/user\/hive\/warehouse\/cz_prd/ ||
[=10=] ~ /^\/user\/hive\/warehouse\/cz_tst/) { split(,a,"/"); db=a[5]; table=a[6]; gsub(".db$", "", table); }
db && ~ /^d/ {par=""; for(i=7;i<=length(a);i++) pa r=par"/"a[i] } db && !~ /^d/
{ par=""; for(i=7;i<=length(a) - 1;i++) par=par"/"a[i]; file=a[length(a)] } NR > 1 { print db,table, par, file, [=10=] }' |
hadoop fs -put -f - /user/hive/warehouse/cz_prd_mon_ma.db/hive_warehouse_files/fsim age.tsv
在不输入密码的情况下像 sudo 一样做一些事情,有一种不安全的方式,比如
echo ubuntu | sudo -S ls
我在这里使用 ubuntu 用户和 ubuntu 密码授予 ls 命令。 如您所见,通过管道将密码传递给 sudo -S 有效。
另外你需要让用户sudoer 这是一个例子 https://askubuntu.com/questions/7477/how-can-i-add-a-new-user-as-sudoer-using-the-command-line.
我能够使用 setfacl 命令解决这个问题。 (上下文:)我在 HDFS 中设置了另一个文件夹,其中备用节点应转储其 fsimages。然后我使用了这个命令,之后,我能够 运行 上面的脚本没有 sudo 并且在 crontab 中。
setfacl -m u:hdfs:rwx /home/user_name/fsimage-dump/namenode