Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Anropa unixscript från JSP?

Postades av 2003-09-03 15:49:17 - Jens Obelin, i forum java, Tråden har 12 Kommentarer och lästs av 902 personer

Undrar om någon vet hur man anropar ett UNIX-script med argumnet från en JSP.sida, Ungefär som qx-kommandot i Perl?


Svara

Sv: Anropa unixscript från JSP?

Postades av 2003-09-03 16:00:15 - Klas Axell

Bara ett par frågor först innan jag kan ge dig ett svar. Jag förmodar att det är ett shell script du vill ropa på? Vad är det som du vill utföra med detta? En bättre approach, om du nu måste använda scriptet, är nog i så fall att anropa det från en java klass i affärslogiken och förse .jsp sidan med resultatet. Men det är svårt att säga något om det egentligen innan du kommer med lite mer information.

/Klas


Svara

Sv: Anropa unixscript från JSP?

Postades av 2003-09-03 16:17:24 - Jens Obelin

ok! Det är ett shellscript jag ropar på. Detta scriptet anropar bla ett C-program som via IPC ligger och lysssnar på ett annat C-program bla bla bla... Därefter sätter shellscriptet upp en html-ström med med input från C-Programmet och skicckar till baka till jsp.sidan.

Om du tycker jag skall sätt upp en klass för detta skulle jag bli själaglad om du ville ge ett exempel på hur detta kan se ut då jag precis har börjat grotta i jsp!

TACK!

Mvh Bond


Svara

Sv: Anropa unixscript från JSP?

Postades av 2003-09-04 09:17:17 - Klas Axell

Det är ett tag sedan jag gjorde det där men jag tror att du gör ungefär på detta sätt:

<code>
Process p = Runtime.getRuntime.exec(new String[] {"/bin/sh", "-c",
"/home/myhome/scripts/myscript.sh"});
p.waitFor();
// läs output från shell script
BufferedReader br = new BufferedReader (new InputStreamReader(p.getInputStream()));
StringBuffer result = new StringBuffer();
while(br.readLine() != null) {
result.append(br.readLine());
}
// skriv resultatet till system out
System.out.println(result.toString());
</code>

Skriv en testklass och se om det fungerar. Har inte hunnit testa det själv. Självklart borde du kanske ha någon typ av config fil där man kan ange var shell scriptet finns om du t ex flyttar applikationen till en annan maskin.

Jag kan ha glömt något i exemplet ovan så hör av dig igen om det inte skulle fungera. Eller om du har andra frågor.

/Klas


Svara

Sv: Anropa unixscript från JSP?

Postades av 2003-09-04 12:57:45 - Jens Obelin

Tack så mycket!

Är det möjligt att skicka med argument till scriptet som skall köras. Altså om jag kan ange argument efter myscript.sh och hur det ser ut med fnuttat osv.

Måste all kod på jsp-sidan ligga i en klass och sen att man gör nedanstående i en try/catch? Eller hur gör jag? jag får nedanstående felmeddelande när jag kör min sida nu.

128 'try' without 'catch' or 'finally'. out.print(__jsp_StaticText.text[1]);
133 Type expected. catch( Exception e) {
156 Class or interface declaration expected. }



Svara

Sv: Anropa unixscript från JSP?

Postades av 2003-09-04 15:09:32 - Klas Axell

Du kan göra ovanstående kod, som jag skrev innan, på jsp-sidan i ett try/catch block. Gör du det innanför <% %> går det ju bra. Men det är inte en vacker lösning men det kanske inte spelar någon roll? Glöm inte att importera rätt klasser till .jsp sidan också. Angående parametrar vet jag att det ska gå att göra...men kommer inte ihåg hur. Jag återkommer när jag kollat upp detta.

/Klas


Svara

Sv: Anropa unixscript från JSP?

Postades av 2003-09-05 11:31:44 - Klas Axell

Ok, jag skrev ihop en liten snabb testklass och jag fick det att fungera...i alla fall på free bsd.

<code>
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class ShellTest {

public static void main(String[] args) {
try {
Process p = Runtime.getRuntime().exec(new String[] {"/bin/sh", "-c", "/home/mydir/test.sh param1 param2"});
p.waitFor();
if(p.exitValue() != 0) {
// kasta ett exception
}
BufferedReader br = new BufferedReader (new InputStreamReader(p.getInputStream()));
StringBuffer result = new StringBuffer();
String line;
while((line = br.readLine()) != null){result.append(line);}
System.out.println(result.toString());
}

catch(IOException iox) {
iox.printStackTrace();
}
catch(InterruptedException ix) {
ix.printStackTrace();
}
}
}
</code>

Jag tror du förstår hur det fungerar.

Lycka till

/Klas


Svara

Sv: Anropa unixscript från JSP?

Postades av 2003-09-05 13:05:35 - Jens Obelin

Tack!

Skall denna sida sparas som jsp och skall koden ha <%%>? Anropar ju sidan från en formulärsida som skickar POST-värden och det går inte så bra.


Svara

Sv: Anropa unixscript från JSP?

Postades av 2003-09-05 13:22:23 - Klas Axell

Koden jag skrev var ju inte någon jsp sida utan en klass som var tänkt för att visa hur det går till att anropa ett shell script. Jag vet inte riktigt vilka kunskaper du har inom java men om du vill göra detta anrop från en jsp sida kan du göra som koden nedan. Dock är inte detta en "snygg" lösning. Man ska helst inte ha någon kod alls på jsp sidor utan istället använda sig av taglibs eller kanske på sin höjd java beans. Detta är kanske lite overkill för din lösning och vill du få det att fungera snabbt och snygga upp saker och ting senare kan du skriva följande sida:

<code>
<%@ page import="java.io.IOException, java.io.BufferedReader,java.io.InputStreamReader" %>
<html>
<head>
</head>
<body>
<%
String param1 = request.getParameter("param1");
String param2 = request.getParameter("param2");
String cmd = "/home/mydir/test.sh " + param1 + " " + param2;
try {
Process p = Runtime.getRuntime().exec(new String[] {"/bin/sh", "-c", cmd});
p.waitFor();
if(p.exitValue() != 0) {
// kasta ett exception
}
BufferedReader br = new BufferedReader (new InputStreamReader(p.getInputStream()));
StringBuffer result = new StringBuffer();
String line = null;
while((line = br.readLine()) != null){result.append(line);}
out.print(result.toString());
}
catch(IOException iox) {
iox.printStackTrace();
}
catch(InterruptedException ix) {
ix.printStackTrace();
}
%>
</body>
</html>
</code>

Det här skulle kunna fungera men jag har inte provat det. Och jag vill säga det igen, det är absolut inget jag rekommenderar att göra så här men det kanske kan ge dig idéer om hur du kan lösa det snyggare.

/Klas


Svara

Sv: Anropa unixscript från JSP?

Postades av 2003-09-05 13:56:42 - Jens Obelin

Tack så jättemycket för hjälpen! Nu funkar det fint!


Svara

Sv: Anropa unixscript från JSP?

Postades av 2003-09-05 16:03:30 - Jens Obelin

p.waitFor(); blir på något sätt hängande. När jag kör mitt script från "shellet" funkar allt bra. Någon ide på en lösning?


Svara

Sv: Anropa unixscript från JSP?

Postades av 2003-09-05 20:52:50 - Klas Axell

Vad menar du med hängande?


Svara

Sv: Anropa unixscript från JSP?

Postades av 2003-09-09 16:53:55 - Jens Obelin

Hej!

Jag vet inte om hängande är rätt ord men uttrycket...

Process p = Runtime.getRuntime().exec(new String[] {"/bin/sh", "-c", cmd});
p.waitFor();
if(p.exitValue() != 0) { }

...blir sant varje gång. Jag misstänker att p.waitFor(); blir "hängande" på något sätt. I och med att scriptet funkar i shellet så vet jag ju att mitt script fungerar som det skall. Men av någon anledning så blir det "knas" när jag kör...

Process p = Runtime.getRuntime().exec(new String[] {"/bin/sh", "-c", cmd});
p.waitFor();




Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 154
27 952
271 704
666
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies