Java: Köra sshell commands innifrån ett java program?

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1

Jag håller på med ett litet projekt på AIX (UNIX) och behöver här skapa ett litet java program som göra vissa saker, en sak den måste göra är att kunna köra unix kommandon.
Hur gör jag det?
System.print.out kör den kommandon?
Känns som om det borde finnas någon säkerhetsspärr mellan här.

Någon som vet?

  • Oregistrerad
  • 2005-09-12 13:04

Hej

String[] cmd = {"/bin/sh", "-c", "/bin/ls > out.dat"};
Process p = Runtime.getRuntime().exec(cmd);

Kolla upp javadocen, är inte helt trivial att använda på ett vettig sätt.

Någon särskild anledning till att det måste göras i Java? Det är väl inte direkt mitt första val för den typen av uppgifter, om vi säger så. Inte för att jag vill basha java, det är ett helt ok verktyg för andra typer av problem, utan jag är mest bara nyfiken

Det är en applikation som ingår i Tivoli, detta lilla projekt ska ta mot vissa uppgifter från en slutanvändare baserade på två val, dessa uppgifter ska sedan användas för att köra ett shell kommando.
Tanken var först ett shell script men så nämndes GUI och då insåg jag att shell script inte är så bra på det.

Vad skulle du ha valt?, nyfiken.
bash, java, perl finns.

GUI är nog inte ett måste, jag kan tvinga de få användarna att köra via CLI.

perl kan jag zipp nada noll om... perl -v säger v 5.
Sedan är jag lika halvtaskig i både java och bash så ja...

Men det har löst sig, kommandot som jag skulle använda visade sig ha denna funktionallitet redan. Om än lite mer styltig men men det funkar.

Aha! Jag skulle egentligen helst välja Ruby i det läget, eftersom det är lika kraftfullt som Perl men modernare, renare och elegantare. Körde mycket Perl tidigare, men numera gör jag ungefär varenda automatiserbar sysadmin-uppgift i Ruby i stället. Fast om det inte är tillgängligt så brukar farfar Perl få komma till räddning... även om det är en sörja till språk är det fortfarande otroligt kraftfullt och väl lämpat för den sortens jobb.

Annars, om du ska integrera funktionaliteten i ett befintligt Java-system, kan man alltid ta till svenskutvecklade JRuby. Det är en Ruby-tolk helt skriven i java (hyggligt snabb faktiskt) som kan interagera relativt sömlöst med befintliga Java-komponenter. Just därför är det poppis bland en del java-människor, eftersom de enkelt kan bädda in ett elegant dynamiskt skriptspråk i sina applikationer utan att behöva göra några större ingrepp i sin befintliga kod.

  • Medlem
  • Stockholm
  • 2005-09-12 20:37
Ursprungligen av Samuel K:

Aha! Jag skulle egentligen helst välja Ruby i det läget, eftersom det är lika kraftfullt som Perl men modernare, renare och elegantare. Körde mycket Perl tidigare, men numera gör jag ungefär varenda automatiserbar sysadmin-uppgift i Ruby i stället. Fast om det inte är tillgängligt så brukar farfar Perl få komma till räddning... även om det är en sörja till språk är det fortfarande otroligt kraftfullt och väl lämpat för den sortens jobb.

Annars, om du ska integrera funktionaliteten i ett befintligt Java-system, kan man alltid ta till svenskutvecklade JRuby. Det är en Ruby-tolk helt skriven i java (hyggligt snabb faktiskt) som kan interagera relativt sömlöst med befintliga Java-komponenter. Just därför är det poppis bland en del java-människor, eftersom de enkelt kan bädda in ett elegant dynamiskt skriptspråk i sina applikationer utan att behöva göra några större ingrepp i sin befintliga kod.

Eller helt enkelt implementera det i Java om det ändå ska köras i ett JavaVM. Ok, Ruby är sexigt, men man behöver inte gå över ån efter vatten.

/Kalle

1
Bevaka tråden