PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SSH-Verbindung wird nich geschlossen



cstux
16.07.04, 11:22
Hi,

ich will auf einer Remote Maschine per SSH ein Skript starten.
ssh root@server /db-files/Entw_JCO.sh stop


killall LinuxStart_Entw_JCO

Verbindung wir einbandfrei geschlossen.

ssh root@server /db-files/Entw_JCO.sh start



java -Xmx128M -Dsun.java2d.noddraw=true com.edag.sap.server.JCO_Server R3E &

Verbindung bleib offen.
Muss mit STRG-C bzw CRTL-C geschlossen werden.

Wie kann ich den java Prozess unabhänig von der SSH starten
oder liegt es an was anderes??

carnil
16.07.04, 11:29
Hi

Was willst du genau machen? Dich auf dem Server einloggen dort ein Skript starten, und obwohl dieser weiterläuft, die ssh-verbindung trotzdem schon schliessen, obwohl das skript noch nicht fertig ist?

Falls ja: man screen oder in der Sufu nach screen suchen, müsste dann genau helfen könnten.

Eine screen-session kannst du dann detachen, und später wieder aufnehmen.

MfG carnil

cstux
16.07.04, 12:20
Es ist ja kein Skript.

Es ist ein Dienst für SAP in JAVA.
[RMI] --> [APPServer] --> [SAP]

Ich will mich auf den Server einloggen und diesen starten bzw. neustarten wenn dieser abgestürzt oder aktuallisiert wurde.

Es ist ein ganz normales init.d Skript. :)

cstux
16.07.04, 15:17
Ich kann das Skript Lokal auf dem Server ausführen.
Jedoch die Remoteausführung über SSH um diesen Dienst zu starten führt dazu das ich nicht mehr in meine Shell zurück falle.

Also CTRL-C und ich kann weiterarbeiten und der Dienst läuft.
Ich will ja nicht immer mit CTRL-C die SSH-Verbindung schliessen.

fladi.at
16.07.04, 15:47
nohup java -Xmx128M -Dsun.java2d.noddraw=true com.edag.sap.server.JCO_Server R3E &

dadurch wird der prozess vom terminal detached. ähnelt der lösung von carnil, bei der du aber den screen wiederum händisch (gibts da nen switch beim starten einer screen-session?) vom terminal detachen musst.

fs111
16.07.04, 22:06
dienst &
diswon
exit

fs111

cstux
20.07.04, 11:27
Also disown sowie nohup hab ich getestet.
Leider ist mit ausloggen immer noch nix.
Die Shell bleibt weiterhin hängen. :(

cstux
20.07.04, 14:32
Vielleicht doch ein OpenSSH Problem??
Version ist 3.8.1p1.

Ist jemandem was bekannt?

carnil
20.07.04, 20:31
Hi

Erlaube mir bitte die Frage, vielleicht habe ich einfach eine lange Leitung oder so, aber was ist an screen verkehrt? Beziehungsweise, wieso wäre das keine Lösung? Sorry, frage nur aus Interesse.

MfG carnil

<Neo>
20.07.04, 21:11
hast du auch "exit" getestet?

cstux
21.07.04, 09:08
Das Problem ist die Shell bleibt hängen.

Das heisst bei mir kommt kein prompt und ich muss es killen.

Auch ein "exit" hab ich versucht und SSH bleibt trotzdem hängen.

Nur STRG+C hilft.
*Hilfe ich hab Linux mit Windows like*

So wäre es wünschens wert


[root@lnx0600-diskless]/root #
[root@lnx0600-diskless]/root # ssh -l lnx0600-eai /db-files/Prod_JCO start
starting SAP_JCO ...
[root@lnx0600-diskless]/root #


So ist es :(


[root@lnx0600-diskless]/root #
[root@lnx0600-diskless]/root # ssh -l lnx0600-eai /db-files/Prod_JCO start
starting SAP_JCO...
*Hier passiert nix, egal wie lange man wartet*
[STRG+C]
Killed by signal 2.
[root@lnx0600-diskless]/root #

cstux
21.07.04, 09:10
Hier noch mal die Debug ausgabe:



OpenSSH_3.8.1p1, OpenSSL 0.9.7d 17 Mar 2004
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to eai [130.10.10.96] port 22.
debug1: Connection established.
debug1: identity file /root/.ssh/identity type -1
debug1: identity file /root/.ssh/id_rsa type 1
debug1: identity file /root/.ssh/id_dsa type -1
debug1: Remote protocol version 1.99, remote software version OpenSSH_3.8p1
debug1: match: OpenSSH_3.8p1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_3.8.1p1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'eai' is known and matches the RSA host key.
debug1: Found key in /root/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending command: /db-files/Prod_JCO start
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
starting SAP_JCO.. P
debug1: channel 0: free: client-session, nchannels 1
Killed by signal 2.

cstux
21.07.04, 09:20
Noch mal ein nachtrag zu dem Exit.
Ich hab es in Skript gehängt und auch als Commando mit "&&" sowie mit ";" angehängt.
Hier bleibt sie auch hängen.

Wenn ich z.B.


ssh -l root eai echo "huhu"

das funktioniert

fs111
21.07.04, 13:29
Versuch mal anstatt exit "~." einzugeben.

man ssh:



[...]
Escape Characters
When a pseudo terminal has been requested, ssh supports a number of func-
tions through the use of an escape character.

A single tilde character can be sent as ~~ or by following the tilde by a
character other than those described below. The escape character must
always follow a newline to be interpreted as special. The escape charac-
ter can be changed in configuration files using the EscapeChar configura-
tion directive or on the command line by the -e option.

The supported escapes (assuming the default '~') are:

~. Disconnect
[...]


HTH

fs111

carnil
21.07.04, 20:38
Hi

Also entschuldigt wenn ich nachhacke, und mich eventuell wiederhole, aber ich möchte verstehen, wieso das nicht geht, wenn man folgendermassen vorgeht:

1. Per ssh auf dem Server einloggen: ssh root@server

2. screen starten: screen -S test
Damit der screensession eine Bezeichnung geben (test)

3. /db-files/Prod_JCO start

4. ctrl+A und ctrl+D, also die screen detachen

5. mit exit die Verbindung zum server beenden.

6. Jederzeit wieder über ssh einloggen und mit screen -r test, wieder die screensitzung aufnehmen, eventuell den Dienst neustarten, usw ....

Kann mir bitte jemand erklären, wieso dies keine Lösung sein darf/kann oder überhaupt nicht funktioniert? Diese Frage ist aus reinem Interesse, ob da eine Einschränkung bezüglich screen vorliegt, oder ob diese Methode einfach zu umständlich wäre, usw .... (verspreche, war das letze Mal, das ich das nachfrage, sorry)

MfG carnil

cstux
19.08.04, 15:08
Ich würde es ja auch gerne verstehen.

Es geht ja mit normalen Programmen.
Jedoch wenn ich dieses mit JAVA mache nicht.

Ich hab keine Ahnung woran dieses liegt.

Das Programm soll im Hintergrund weiterlaufen.

Versuch es mal mit JAVA und einem HELLO Programm.