Script + EXEC


#1

Ciao ragazzi mi sapete aiutare, ho scritto uno script un po macchinoso
(d’altronde sono agli inizi)
)per la configurazione di un pacchetto server per linux.
Lo script esegue una serie di comandi e di modifica di file il mio
problema che non avevo valutato è che quando eseguo alcuni comandi
esterni (esempio gli script in /etc/init.d/) mi esce anche dallo script
ruby, questo perchè probabilmente lo script che lancio da un exit,
sapete dirmi come faccio a mantenere il controllo sullo script originale
senza modificare gli script esterni??

Grazie


#2

On mar, 2007-01-16 at 09:30 +0100, Gianluca R. wrote:

Grazie

Non credo dipenda da una chiamata a “exit” dello shell script, puoi
inviare la parte di codice ruby che esegue gli script in init.d ?


#3

Roberto De Ioris wrote:

On mar, 2007-01-16 at 09:30 +0100, Gianluca R. wrote:

Grazie

Non credo dipenda da una chiamata a “exit” dello shell script, puoi
inviare la parte di codice ruby che esegue gli script in init.d ?

File.copy("/etc/fstab","/etc/fstab-old-rb",verbose=false)
newfile = File.new(“fstab-old”,“w”)
File.open(ARGV[0],“r+”).each_line do |x| # per ogni riga x del file:

s=x.split

if s[1]=="/"
s[3].replace “acl,user_xattr,usrquota,grpquota”
puts s[3]
end
s.each_index do |w|

newfile.write(s[w]+" ")
if w==5

newfile.write("\n")
end
end

end
newfile.close
File.delete("/etc/fstab-old")
File.move(“fstab-old”,"/etc/")

#DNS server
exec “chkconfig --add named”
exec “/etc/init.d/named start”
#alla fine
exec “touch /aquota.user /aquota.group”
exec “chmod 600 /aquota.*”

la prima parte mi serve per modificare un file poi inserisco named per
l’esecuzione quindi lo avvio alla seconda chiamate ossia
(/etc/init.d/named star) esce eseguendo correttamente il comando!

Hai suggerimenti?


#4

Gianluca wrote:

#DNS server
exec “chkconfig --add named”

Essi’ il problema e’ proprio l’exec… che sostituisce il processo con
quello exec’guito. Questa discussione contiene parecchie idee utili:
http://www.ruby-forum.com/topic/83740 ma in sostanza tu vuoi fare
chkconfig --add named , con i controapici. Se hai bisogno di piu’
controllo invece dovresti dare un’occhiata a popen o open3.

Ciao