Witam
mam pytanie , a własciwie prośbe czy wie ktoś jak za pomocą railsów obsługiwać skrypty basha oraz perla ?
chodzi mi o to zeby na stornie po kliknieciu na przykladowy button dalo sie wykonac okreslony skrypt znajdujacy sie na serwerze.
Witam
mam pytanie , a własciwie prośbe czy wie ktoś jak za pomocą railsów obsługiwać skrypty basha oraz perla ?
chodzi mi o to zeby na stornie po kliknieciu na przykladowy button dalo sie wykonac okreslony skrypt znajdujacy sie na serwerze.
Najprostsza droga: możesz wywoływać polecenia shella, umieszczając je w kodzie wewnątrz znaków “`”, np.
class RemoteController
def show_art
@result = `cat art.txt`
end
end
Oczywiście, musisz być świadomym zagrożeń, które mogą powstać przy nieuważnym stosowaniu wywołań zewnętrznych programów na serwerze.
Napisalem stronke ktora dziala tylko w sieci LAN , wiec chyba duzych szkod nie narobi?
dopisze ta klase do kontrolera , to bedzie sie ona wykonywac w momencie otwarcia danego kontrolera ? prawda ?
a jak mozna by bylo dodac zmienne ? i czy mogloby to byc z poziomu przegladrki ?
[quote=benythakilla]Napisalem stronke ktora dziala tylko w sieci LAN , wiec chyba duzych szkod nie narobi?
dopisze ta klase do kontrolera , to bedzie sie ona wykonywac w momencie otwarcia danego kontrolera ? prawda ?[/quote]
Dopisz wylacznie metode. Jezeli chcesz ja wywolac w czasie wywolania kontrolera, umiesc w before_filter badz w kontruktorze.
Aby bylo skladnie i ladnie mozesz uzyc metody system. Na przyklad:
[code=Ruby]source = ‘/tmp/file1’
destination = ‘/home/users/me’
system(“cp”, source, destination) # => wywola w systemie polecenie ‘cp /tmp/file1 /home/users/me’[/code]
Wlasnie ze wzgledu bezpieczenstwa lepiej nie przekazywac zmiennych z poziomu przegladarki. Ktos moglby przeslac do Twojej aplikacji np. rm -f *.
Ale mozesz to dobrze odfiltrowac albo dac dostep wylacznie do wybranych polecen.
Ale przede wszystkim… Co Cie zmusza do tego, zeby odpalac skrypt w systemie zamiast zrobic to w aplikacji?
dzieki bardzo za pomoc.wlasciwiwie dlatego zmierzam zeby to bylo z poziomu przegladrki …bo ludzie ktorzy beda to obslugiwac nie potrafia wlaczyc nawet konsoli w linuksie.
To tym bardziej nie powinni mieć do tej konsoli dostępu…
a mam pytanie , a jak wlasciwie wywolac inny plik na tej samej zasadzie skrypt perlowy. naprzyklad test.pl znajdujacy sie na pulpicie
Analogicznie
system("perl /sciezka/do/skryptu.pl")
Analogicznie. Uzywanie polecen system, exec, czy tez operatora polecenia systemowego, wyglada tak samo, jak uzycie konsoli.
Jezeli wiec chcesz wywolac skrypt z Pulpitu, moze to wygladac na przyklad tak:
`/home/users/me/Desktop/test.pl`
przyklad w skrypcie Tets.sh napislaem jedna komende o stworzenie pliku i logi wyrzucaja mi
touch: cannot touch `1.txt’: Permission denied
to jak moge zmienic uprawniena?
Może najpierw poczytaj o linuxach, a później będziesz pytał o railsy/rubiego.
dobra moze faktycznie nie bylo to za madre pytanie :).
Ale o jeszcze jedna rzecz zapytam
Mam pole teksotwe w formularzu, chcialbym przekazac warotosc tego pola do zmiennej i uzyc jej jako parametru do wykonywanego skryptu.
jak do polecenia system(’ ') dac zmienną ? powiedzmy
@beny = perl /sciezka/do/skryptu.pl
system('@beny')
prosze o pomoc
system("echo", "hello")
[code]>> puts File.read("/tmp/hello.rb")
puts “Hello #{ARGV.join(”, “)}!”
=> nil
system(“ruby”, “/tmp/hello.rb”, “benythakilla”)
Hello benythakilla!
=> true[/code]
no tak , tyle ze mi wlasnie chodzi o cos innego
czy w poleceniu system moge dac zmienna ktora bedzie wskazywac na sciezke do skryptu.
Wiem ze ponizszy przyklad jest skladniowo zle napisany ale przedstawia to o co mi chodzi , szukalem na wielu forach i nie znalazlem.
@beny = perl /sciezka/do/skryptu.pl
@parametr=1.txt
system('@beny' , '@parametr')
pozdrawiam
[quote=benythakilla]no tak , tyle ze mi wlasnie chodzi o cos innego
czy w poleceniu system moge dac zmienna ktora bedzie wskazywac na sciezke do skryptu.
Wiem ze ponizszy przyklad jest skladniowo zle napisany ale przedstawia to o co mi chodzi , szukalem na wielu forach i nie znalazlem.
@beny = perl /sciezka/do/skryptu.pl
@parametr=1.txt
system('@beny' , '@parametr')
pozdrawiam[/quote]
Może to pomoże
system("#{@beny} #{@parametr}") # koniecznie czuczysłów nie apostrof
Oczywiscie, przeciez system to najzwyklejsza metoda. Co za roznica, czy podasz lancuch, czy zmienna zawierajaca na lancuch.
system('cp', 'file.txt', '/catalog')
[code=Ruby]order = ‘cp’
file = ‘file.txt’
catalog = ‘/catalog’
system(order, file, catalog)[/code]
Przyklady 1. i 2. sa semantycznie rownowazne.