簡體   English   中英

Cron與需要sudo的命令

[英]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" } $0 ! ~ /_impala_insert_staging/ && ($0 ~ /^\/user\/hive\/warehouse\/cz_prd/ || 
$0 ~ /^\/user\/hive\/warehouse\/cz_tst/) { split($1,a,"/"); db=a[5]; table=a[6]; gsub(".db$", "", table); } 
db && $10 ~ /^d/ {par=""; for(i=7;i<=length(a);i++) pa r=par"/"a[i] } db && $10 !~ /^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, $0 }' |
 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是可行的。

另外,您需要使用戶更友好,這是一個示例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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM