# [solved] eix-sync im cron job

## forrestfunk81

Hallo zusammmen,

auf meinem Router / Homeserver möchte ich Portage und Overlays gerne per Cron Job synchronisieren. Dann möchte ich mir ein Skript schreiben, dass mögliche Updates und vor allem glsa Checks per Email sendet. Dieser Router / Homeserver soll auch als Sync Mirror für Rechner im LAN dienen.

Das Problem fängt leider schon beim Synchronisieren von Portage im Cron Job an.

```
* Syncing all portage overlays

 ^[[32;01m*^[[39;49;00m Fetching remote list,...

 ^[[32;01m*^[[39;49;00m Remote list already up to date: http://www.gentoo.org/proj/en/overlays/repositories.xml

 ^[[32;01m*^[[39;49;00m Last-modified: Wed, 01 Oct 2014 18:10:02 GMT

 ^[[32;01m*^[[39;49;00m Fetch Ok

 ^[[32;01m*^[[39;49;00m Syncing selected overlays,...

* Running emerge --sync

>>> Synchronization of repository 'gentoo' located in '/usr/portage'...

rsync: did not see server greeting

rsync error: error starting client-server protocol (code 5) at main.c(1635) [Receiver=3.1.1]

>>> Starting retry 1 of 5 with rsync://[2a01:488:67:1000:b01c:3277:0:1]/gentoo-portage

rsync: safe_read failed to read 1 bytes [Receiver]: Connection reset by peer (104)

rsync error: error in rsync protocol data stream (code 12) at io.c(276) [Receiver=3.1.1]

>>> Starting retry 2 of 5 with rsync://81.91.253.252/gentoo-portage

rsync: safe_read failed to read 1 bytes [Receiver]: Connection reset by peer (104)

rsync error: error in rsync protocol data stream (code 12) at io.c(276) [Receiver=3.1.1]

>>> Starting retry 3 of 5 with rsync://140.211.166.189/gentoo-portage

rsync: safe_read failed to read 1 bytes [Receiver]: Connection reset by peer (104)

rsync error: error in rsync protocol data stream (code 12) at io.c(276) [Receiver=3.1.1]

>>> Starting retry 4 of 5 with rsync://91.186.30.235/gentoo-portage

rsync: safe_read failed to read 1 bytes [Receiver]: Connection reset by peer (104)

rsync error: error in rsync protocol data stream (code 12) at io.c(276) [Receiver=3.1.1]

>>> Starting retry 5 of 5 with rsync://176.28.50.119/gentoo-portage

rsync: safe_read failed to read 1 bytes [Receiver]: Connection reset by peer (104)

rsync error: error in rsync protocol data stream (code 12) at io.c(276) [Receiver=3.1.1]

!!! Exhausted addresses for rsync.gentoo.org

>>> Starting rsync with rsync://[2a01:90:200:10::1a]/gentoo-portage...

>>> Checking server timestamp ...

>>> Retrying...

>>> Checking server timestamp ...

>>> Retrying...

>>> Checking server timestamp ...

>>> Retrying...

>>> Checking server timestamp ...

>>> Retrying...

>>> Checking server timestamp ...

>>> Retrying...

>>> Checking server timestamp ...

>>> Retrying...

 * emerge --sync failed

 * Time statistics:

     4 seconds for syncing

    12 seconds total
```

Sync in der Konsole funktioniert jederzeit, nur nicht im Cron Job. Internet Verbindung muss da sein, da kurz nach dem Sync Job ein Backup Job losläuft, welcher ein Backup von meinem virtuellen Server aus dem Netz zieht und das läuft fehlerfrei durch.

```
cat /etc/cron.daily/eix-sync 

#!/bin/bash 

/usr/bin/eix-sync

```

Was könnte hier das Problem sein?

----------

## mike155

 *Quote:*   

> Was könnte hier das Problem sein?

 

Die Umgebungsvariablen, speziell PATH? 

Ich würde in das Script "/etc/cron.daily/eix-sync" eine Zeile vor dem eix-sync-Aufruf 

einfügen und dort die bash-Anweisung "export" reinschreiben. 

Dann würde ich schauen was ausgegeben wird, wenn das Script über cron aufgerufen wird. 

Das würde ich vergleichen mit der Ausgabe, wenn das Script von Hand aufgerufen wird.

----------

## forrestfunk81

Danke für den Tip, das werd ich heute abend gleich mal ausprobieren.

----------

## mv

Falls Du systemd benutzt, kann es auch sein, dass das Netzwerk in der entsprechenden cgroup nicht sichtbar ist - systemd hat da (wie auch sonst überall) Etliches verbockt.

----------

## forrestfunk81

Daran kanns nicht liegen, bei diesem System nutze ich OpenRC.

[Edit]Falls das was zur Sache tut: iirc ist der Cron Daemon vixie-cron. Sitz aber atm nicht vor dem Rechner und werde nochmal nachschauen.

----------

## mrueg

Mal app-portage/porticron ausprobiert? Sollte deinen Usecase erfüllen.

----------

## forrestfunk81

mrueg vielen Dank für den Tip. porticron kannte ich noch nicht und das macht genaus das, was ich mir vorgestellt habe.

Einen Netzwerk-relevanten Unterschied in den Umgebungsvariablen konnte ich übrigens nicht feststellen.

----------

## toralf

Hhm, könnten irgendwelche User/Gruppenberechtigungen da Probleme bereiten ? Der cron job wird ja nicht unter Deiner user-id ausgeführt, oder ? Evtl. tun da policy-kit/dbus/consolekit Dinge dazwischenfunken ?

Füge doch mal den cron user zur portage Gruppe hinzu. Oder du könntest ein "sudo -u <foo user>" oder so im cronjob einfügenund gucken, ob es das geht.

----------

## mv

 *toralf wrote:*   

> Hhm, könnten irgendwelche User/Gruppenberechtigungen da Probleme bereiten?

 

Außer cgroups, hardened-kernel, und ggf. noch merkwürdige iptables-Regeln kann m.W. nichts den Netzverkehr nach außen unterbinden.

----------

## toralf

 *mv wrote:*   

>  *toralf wrote:*   Hhm, könnten irgendwelche User/Gruppenberechtigungen da Probleme bereiten? 
> 
> Außer cgroups, hardened-kernel, und ggf. noch merkwürdige iptables-Regeln kann m.W. nichts den Netzverkehr nach außen unterbinden.

 Richtig, und außerdem war der rsync an sich doch ok, nur die overlays konnten nicht gesync'ed werden, und das ist eher ein klassisches cron/PATH/environment Problem, denke ich.

----------

## forrestfunk81

mv, ich verwende den hardened Kernel. Was könnte denn dabei das Problem sein?

toralf, der rsync an sich ging doch schon schief, nicht erst die Overlays. Oder lese ich das Log falsch?

```
* Running emerge --sync

>>> Synchronization of repository 'gentoo' located in '/usr/portage'...

rsync: did not see server greeting

...

```

Das ganze aber nur noch aus Neugier. Ich verwende jetzt porticron und das läuft sauber durch und sendet mir Mails.

----------

## toralf

Oops, der Originalpost ging mit "* Syncing all portage overlays " los - da ging ich davon aus, das der tree selbst schon durch ist.

Ich habe mir das porticron script angeschaut, da ist kein Hexenwerk drin. Ich tippe auf fehlende PATHs in Verbindung mit cron, da ich den hardened kernel nicht so gut kenne und damit tyisch Mensch dies einfach ausblende.

Aber das Ganze ist meines Erachtens wert, verstanden zu werden - vllt. können die hardened-people ja einen Tipp geben ?

----------

