luettel
I'm new here

Fehler beim sync-Skript

Jump to solution

Hallo Zusammen,

ich erhalte bei meinem rsync-Skript immer den folgenden Fehler:

INFO  14.01.2014 08:42:25.790 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): new session (ID=3796065200257948731, user=SYSTEM, userID=0, type=DUMMY) created

INFO  14.01.2014 08:42:25.790 (de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl): starting task 'rsync' - schedule entry 'USU -- UXB-Graph Deployment' (id=161651)

INFO  14.01.2014 08:42:25.816 (de.espirit.firstspirit.impl.access.ScriptContextImpl): rsync-ssh-Deployment for project "Integrations-Demo 2": script started

INFO  14.01.2014 08:42:25.822 (de.espirit.firstspirit.impl.access.ScriptContextImpl): rsync-ssh-Deployment for project "Integrations-Demo 2": WrapperManager.exec(ssh -oBatchMode=yes -oStrictHostKeyChecking=no -l root localhost echo success)

ERROR 14.01.2014 08:42:25.900 (de.espirit.firstspirit.impl.access.ScriptContextImpl): rsync-ssh-Deployment for project "Integrations-Demo 2": failed with exitcode 255 for WrapperManager.exec(ssh -oBatchMode=yes -oStrictHostKeyChecking=no -l root localhost echo success)

INFO  14.01.2014 08:42:25.901 (de.espirit.firstspirit.impl.access.ScriptContextImpl): rsync-ssh-Deployment for project "Integrations-Demo 2": WrapperManager.exec(rsync -vcrt -e ssh  -oBatchMode=yes -oStrictHostKeyChecking=no -l root /opt/firstspirit5/web/fs5staging/158882/161651/ localhost:/home/usu/firstspirit)

ERROR 14.01.2014 08:42:25.973 (de.espirit.firstspirit.impl.access.ScriptContextImpl): rsync-ssh-Deployment for project "Integrations-Demo 2": failed with exitcode 255 for WrapperManager.exec(rsync -vcrt -e ssh  -oBatchMode=yes -oStrictHostKeyChecking=no -l root /opt/firstspirit5/web/fs5staging/158882/161651/ localhost:/home/usu/firstspirit)

INFO  14.01.2014 08:42:25.974 (de.espirit.firstspirit.impl.access.ScriptContextImpl): rsync-ssh-Deployment for project "Integrations-Demo 2": script completed

INFO  14.01.2014 08:42:25.974 (de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl): finished task 'rsync' - schedule entry 'USU -- UXB-Graph Deployment' (id=161651)

Der User root hat alle Rechte auf dem Server. Ich bleibe nur auf dem Server.

Führe den Befehl "ssh -oBatchMode=yes -oStrictHostKeyChecking=no -l root localhost echo success" auf der console aus erhalte ich success was ja auch richtig ist.

Es handelt sich um das Skritp aus der Doku.

// $Revision: 47547 $

Wer kann mir helfen?

Gruß

Labels (1)
0 Kudos
1 Solution

Accepted Solutions
feddersen
Community Manager
Community Manager

Re: Fehler beim sync-Skript

Jump to solution

Nein, da musst du nichts anderes setzen. Aber der User, mit dem FirstSpirit läuft, muss eben das Recht haben sich auf der Maschine als root über ssh einzuloggen. Das ist auf den meisten Maschinen per Default nicht erlaubt.

View solution in original post

0 Kudos
6 Replies
luettel
I'm new here

Re: Fehler beim sync-Skript

Jump to solution

Ein ähnliches Problem habe ich auch bei diesem Skript.

Führe den Befehl " ssh  -oBatchMode=yes -oStrictHostKeyChecking=no -l root localhost cp -R /opt/firstspirit5/web/fs5staging/158882/161651/* /home/usu/firstspirit/" auf der Console auf dem Server aus, dann funktioniert es ohne Problme. Nur mit FS nicht. Da erhalte ich folgende Fehlermeldung:

INFO  15.01.2014 08:07:05.294 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): new session (ID=4542608183296597432, user=SYSTEM, userID=0, type=DUMMY) created

INFO  15.01.2014 08:07:05.295 (de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl): starting task 'rsync' - schedule entry 'USU -- UXB-Graph Full Deployment' (id=161651)

INFO  15.01.2014 08:07:05.310 (de.espirit.firstspirit.impl.access.ScriptContextImpl): rsync-ssh-Deployment for project "Integrations-Demo 2": script started

INFO  15.01.2014 08:07:05.315 (de.espirit.firstspirit.impl.access.ScriptContextImpl): rsync-ssh-Deployment for project "Integrations-Demo 2": WrapperManager.exec(ssh -oBatchMode=yes -oStrictHostKeyChecking=no -l root localhost cp -R /opt/firstspirit5/web/fs5staging/158882/161651/* /home/usu/firstspirit/)

ERROR 15.01.2014 08:07:05.401 (de.espirit.firstspirit.impl.access.ScriptContextImpl): rsync-ssh-Deployment for project "Integrations-Demo 2": failed with exitcode 255 for WrapperManager.exec(ssh -oBatchMode=yes -oStrictHostKeyChecking=no -l root localhost cp -R /opt/firstspirit5/web/fs5staging/158882/161651/* /home/usu/firstspirit/)

INFO  15.01.2014 08:07:05.401 (de.espirit.firstspirit.impl.access.ScriptContextImpl): rsync-ssh-Deployment for project "Integrations-Demo 2": script completed

INFO  15.01.2014 08:07:05.401 (de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl): finished task 'rsync' - schedule entry 'USU -- UXB-Graph Full Deployment' (id=161651)

//! Beanshell

// FIRSTspirit script for scheduled deployment via rsync and ssh.

// $Revision: 47547 $

//

// The script should be added via the project settings "Schedule management"

// as an "Extended FirstSpirit script" after a "Generation Action" in a task.

// It copies all changed generated files via rsync/ssh from the generation action

// to the given path on the web server host.

//

// On first start, an error message is shown like

// "Warning: Permanently added 'myhost' (RSA) to the list of known hosts.".

// That message can be ignored and further runs does not show it.

//

// The script accepts the following parameters which can be added or changed

// via "Script Properties" in the FirstSpirit task action.

// Do not modify them in this script!

import de.espirit.firstspirit.agency.ProcessAgent;

webuser     = "";

webhost     = "";

webpath     = "";

webinf      = "";

privkey     = "";

ssh         = "ssh";

rsync       = "rsync";

rsyncopts   = "-vcrt";

rsyncopts2  = null;

rsyncopts3  = null;

rsyncopts4  = null;

// end of variable definition

tasklist = context.getTasks();

t = context.getTask();

s = t.getScheduleEntry();

p = s.getProject();

log = "rsync-ssh-Deployment for project \"" + p.getName() + "\": ";

context.logInfo(log + "script started");

params = t.getParameters();

if (params == null) {

          context.logError(log + " failed. Missing parameters. "

                    + "Required: webhost, webuser, webpath. "

                    + "Optional: webinf, privkey, ssh, rsync, rsyncopts, rsyncopts2, rsyncopts3, rsyncopts4.");

          return;

}

for(pa: params) {

          switch(pa.getKey()) {

          case "webuser":

                    webuser = pa.getValue();

                    break;

          case "webhost":

                    webhost = pa.getValue();

                    break;

          case "webpath":

                    webpath = pa.getValue();

                    break;

          case "webinf":

                    webinf = pa.getValue();

                    break;

          case "privkey":

                    privkey = pa.getValue();

                    break;

          case "ssh":

                    ssh = pa.getValue();

                    break;

          case "rsync":

                    rsync = pa.getValue();

                    break;

          case "rsyncopts":

                    rsyncopts = pa.getValue();

                    break;

          case "rsyncopts2":

                    rsyncopts2 = pa.getValue();

                    break;

          case "rsyncopts3":

                    rsyncopts3 = pa.getValue();

                    break;

          case "rsyncopts4":

                    rsyncopts4 = pa.getValue();

                    break;

          }

}

if (webuser.equals("")) {

          context.logError(log + "failed. Parameter \"webuser\" missing.");

          return;

}

if (webhost.equals("")) {

          context.logError(log + "failed. Parameter \"webhost\" missing.");

          return;

}

if (webpath.equals("")) {

          context.logError(log + "failed. Parameter \"webpath\" missing.");

          return;

}

if (privkey.equals("")) {

          keyopt = "";

} else {

          keyopt = "-i " + privkey;

}

cmd = new Vector();

 

cmd2 = new Vector();

cmd2.addAll(Arrays.asList(new String[]{ssh, "-oBatchMode=yes", "-oStrictHostKeyChecking=no", "-l", "root", "localhost",

    "cp -R /opt/firstspirit5/web/fs5staging/158882/161651/* /home/usu/firstspirit/"}));

cmd.add(cmd2);

for (c : cmd) {

          cmdstr = "";

          for (String s : c) {

                    cmdstr += " " + s;

          }

          cmdstr = "WrapperManager.exec(" + cmdstr.substring(1) + ")";

          context.logInfo(log + cmdstr);

          Process p = null;

          try {

                    p = context.requireSpecialist(ProcessAgent.TYPE).getBuilder().command(c).redirectOutput(log).start();

        result = p.waitFor();

        if ( result == 0 ) {

            context.logInfo(log + "command completed");

        } else {

            context.logError(log + "failed with exitcode " + result + " for " + cmdstr);

        }

          } catch (InterruptedException e) {

                    context.logError(log + "interrupted, for " + cmdstr);

          } catch (Exception e) {

                    context.logError(log + "failed for " + cmdstr + " - " + e);

          } finally {

              if (p != null) {

                  p.destroy();

              }

          }

}

context.logInfo(log + "script completed");

0 Kudos
luettel
I'm new here

Re: Fehler beim sync-Skript

Jump to solution

Genauso wie dieser Teil. Auf der Console klappt es, aber nicht bei FS.

cmd2 = new Vector();

cmd2.add(rsync);

if (tasklist.size() <= 1) {

          // script testing mode

          // as at least one previous task for generating the files is needed

          cmd2.add("-n");

          srcpath = System.getProperty("cmsroot") + "/server/lib";

} else {

          // normal scheduled mode

          i = context.getTaskIndex();

          if ( i <= 0 ) {

                    context.logError(log

                                        + "failed. No previous generate task found "

                                        + "in tasklist!");

                    return;

          } else {

                    srcpath = context.getPath();

          }

}

if (srcpath == null || srcpath.length() == 0) {

          context.logError(log + "failed. empty srcPath variable!");

          return;

}

// Replace something like c:\path with /cygdrive/c/path as rsync from

// Cygwin does need this.

if (srcpath.indexOf(":") >= 0) {

          srcpath = "/cygdrive/" + srcpath.charAt(0) + srcpath.substring(2);

}

if (rsyncopts!=null && rsyncopts.length() > 0) {

          cmd2.add(rsyncopts);

}

if (rsyncopts2!=null && rsyncopts2.length() > 0) {

          cmd2.add(rsyncopts2);

}

if (rsyncopts3!=null && rsyncopts3.length() > 0) {

          cmd2.add(rsyncopts3);

}

if (rsyncopts4!=null && rsyncopts4.length() > 0) {

          cmd2.add(rsyncopts4);

}

cmd2.addAll(Arrays.asList(new String[]{webhost + ":" + webpath}));

cmd.add(cmd2);

Fehlermeldung:

ERROR 15.01.2014 08:23:57.802 (de.espirit.firstspirit.impl.access.ScriptContextImpl): rsync-ssh-Deployment for project "Integrations-Demo 2": failed with exitcode 23 for WrapperManager.exec(rsync -vcrt localhost:/home/usu/firstspirit)

0 Kudos
feddersen
Community Manager
Community Manager

Re: Fehler beim sync-Skript

Jump to solution

Hallo Daniel,

du willst ein normales Rsync-Deplyoment machen? Dann brauchst du am Skript nichts zu modifizieren, sondern einfach nur in den Eigenschaften des Skriptes die Parameter entsprechend setzen. Wahrscheinlich wird durch deine Modifikationen einfach kein gültiges Kommando erzeugt. Wenn du sowieso auf der gleichen Maschine bist, kannst du natürlich auch einfach ins Dateisystem deployen.

Viele Grüße

Christoph

0 Kudos
luettel
I'm new here

Re: Fehler beim sync-Skript

Jump to solution

Hallo Christoph,

ich bin aktuell auf dem gleichem Server, aber später soll das mal auf einen anderen Server.

Wenn ich das normale Skript von euch aus der Doku benutze, dann erhalte ich auch einen Fehler.

webuser=root

webhost=localhost

webpath=/home/usu/firstspirit

Muss ich in dem Standars-Skript aus der Doku noch was setzen?

Gruß

Daniel

0 Kudos
feddersen
Community Manager
Community Manager

Re: Fehler beim sync-Skript

Jump to solution

Nein, da musst du nichts anderes setzen. Aber der User, mit dem FirstSpirit läuft, muss eben das Recht haben sich auf der Maschine als root über ssh einzuloggen. Das ist auf den meisten Maschinen per Default nicht erlaubt.

0 Kudos
luettel
I'm new here

Re: Fehler beim sync-Skript

Jump to solution

OK. Ich habe das jetzt mal mit dem fs5 user probiert und schon klappt es. Das ist ein guter Hinweis, welchen ich noch nicht kannte.

Danke.

Gruß

0 Kudos