2011-11-06 52 views
1

我使用下面的ant腳本刪除遠程計算機上的一個crontab:編輯的crontab遠程螞蟻sshexec不不行

<target name="remove-crontab"> 
    <echo message="Removing Crontab" /> 
    <sshexec host="${host}" username="${username}" password="${password}" command="crontab -r" trust="true" failonerror="false" /> 
</target> 

即使有一個crontab當我運行該腳本,根據用戶名我得到no crontab for username

我唯一的猜測是當通過SSH連接時,一些特權被採取。任何人都知道這是怎麼回事?

謝謝。

+0

我也注意到,如果我使用與運行同一用戶的-u標誌'crontab'是明確的,我得到'必須是特權使用-u' – Michael

回答

1

確保crontab文件存在於/var/spool/cron/用戶和檢查,看看是否它的主人/組的權限是正確的:

[ 09:59 [email protected] ~ ]# ll /var/spool/cron/ 
total 12K 
-rw------- 1 jon root 601 May 2 2011 jon 
-rw------- 1 root root 460 Aug 31 2010 root 
-rw------- 1 tomcat root 601 Nov 17 2010 tomcat 

一個解決您的問題可能只是空通過將/ dev/null指向crontab而不是使用-r。這將確保刪除cron作業,但crontab文件不會從/ var/spool/cron中刪除(-r選項只會刪除此文件,這就是爲什麼第二次運行crontab -r時,它說沒有crontab用戶):

[ 10:40 [email protected] ~ ]$ ssh [email protected] "crontab -r" 
no crontab for jared 
[ 10:40 [email protected] ~ ]$ ssh [email protected] "crontab < /dev/null" 
[ 10:40 [email protected] ~ ]$ ssh [email protected] "crontab -r" 
[ 10:40 [email protected] ~ ]$ ssh [email protected] "crontab -r" 
no crontab for jared 

<target name="remove-crontab"> 
    <echo message="Removing Crontab" /> 
    <sshexec host="${host}" username="${username}" password="${password}" command="crontab < /dev/null" trust="true" failonerror="false" /> 
</target> 

我不知道,但command="crontab < /dev/null"可能需要command="crontab &lt; /dev/null"


usage: crontab [-u user] file 
     crontab [-u user] [ -e | -l | -r ] 
       (default operation is replace, per 1003.2) 
     -e  (edit user's crontab) 
     -l  (list user's crontab) 
     -r  (delete user's crontab) 
     -i  (prompt before deleting user's crontab) 
     -s  (selinux context)