Sziasztok,
A kérdésem csupán annyi lenne, hogy a /dev/log fájl, pontosabban
socket hogy jön létre? Milyen paranccsal tudok socketet létrehozni?
Google-t megnéztem, ott mksock parancsot emlegettek, de sajna az
én disztrómban nincs olyan és nem tudom milyen csomagot kéne hozzá
letölteni.
A válaszokat előre is köszönöm
- 1344 megtekintés
Hozzászólások
nem világos nekem, mit is szeretnél csinálni? minek neked a /dev/log???
--
by Mikul@s
- A hozzászóláshoz be kell jelentkezni
A /dev/log socketet a naplózásért felelős program (pl. syslog-ng) hozza létre. Amikor egy folyamat ezt a socketet használja, tulajdonképpen a naplózó programmal lép kapcsolatba. Bár létrehozhatsz socket fájlt "csak úgy", annak nem lesz sok értelme, mivel a "túloldalon" nem fog válaszolni senki a kérésekre.
Valószínűleg azért nincs mksock vagy hasonló a disztródban (nálam sincs), mert nem nagyon van rá szükség. Nekem egyszer kísérletezéshez kellett, írtam egyet magamnak :). Ha érdekel, itt a forrás. De, még egyszer, nem hiszem, hogy tényleg szükséged lenne rá.
#include <stddef.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/un.h>
int make_named_socket (const char *filename) {
/* This function is from an example in chapter 16.5.3
of the GNU C Library Reference Manual, v0.10 */
struct sockaddr_un name;
int sock;
size_t size;
/* Create the socket. */
sock = socket (PF_LOCAL, SOCK_DGRAM, 0);
if (sock < 0)
{
perror ("socket");
exit (EXIT_FAILURE);
}
/* Bind a name to the socket. */
name.sun_family = AF_LOCAL;
strncpy (name.sun_path, filename, sizeof (name.sun_path));
name.sun_path[sizeof (name.sun_path) - 1] = '\0';
/* The size of the address is
the offset of the start of the filename,
plus its length,
plus one for the terminating null byte.
Alternatively you can just do:
size = SUN_LEN (&name);
*/
size = (offsetof (struct sockaddr_un, sun_path)
+ strlen (name.sun_path) + 1);
if (bind (sock, (struct sockaddr *) &name, size) < 0)
{
perror ("bind");
exit (EXIT_FAILURE);
}
return sock;
}
int main(int argc, char **argv) {
if(argc != 2) {
fprintf(stderr, "Usage: mksock filename\n");
return EXIT_FAILURE;
}
make_named_socket(argv[1]);
return EXIT_SUCCESS;
}
- A hozzászóláshoz be kell jelentkezni
Köszi a kimerítő választ. Tényleg nem írtam le rendesen, hogy mire lenne szükségem és miért.
A cégnél van egy Zorp-os tűzfal, amin ntp fut chroot-ban. Nagyon tetszik ez a chrootos megoldás és
egy másik szerveren is meg akartam valósítani. Feltűnt, hogy a /var/chroot/ntp/dev alatt van egy
"null" node és egy "log" socket. A node-ot létre tudtam hozni, de a log socketet nem.
Ez a problémám forrása. És ezért sajna nem is naplózódnak az ntp cselekvései, úgyhogy nem nagyon tudom,
hogy az most működik-e vagy sem.
Ezért akarom/akartam létrehozni a "log" socketet, hogy a naplóba bekerüljenek az ntp bejegyzései is.
Üdv: Chris
- A hozzászóláshoz be kell jelentkezni
Ha mar Zorp, akkor azon syslog-ng fut, ami letrehozza a log socket-eket, amik a konfigjaban vannak. syslogd eseteben kezzel kell, mksock a te baratod. Az, hogy ez Gentoo-n hova van eldugva, passz. Rakj fel syslog-ng-t, es nem lesz ezzel gondod...
- A hozzászóláshoz be kell jelentkezni
Ha lényegében egy másolatot szeretnél készíteni a socket-ről a chroot-on belül, azt egy "bind mount"-tal megoldhatod:
touch /var/chroot/ntp/dev/log
mount --bind /dev/log /var/chroot/ntp/dev/log
chroot /var/chroot/ntp ...
umount /var/chroot/ntp/dev/log
rm /var/chroot/ntp/dev/log
Amikor létrehozod az első sorban, akkor még egy közönséges fájl, de a második sorban socket-té válik :). Innentől kezdve lényegében mindegy, hogy melyikhez csatlakozol, de a chroot-ból nyilván csak a belsőhöz tudsz. A mount-olást persze minden újraindításnál meg kell csinálni.
- A hozzászóláshoz be kell jelentkezni
akkor mar inkabb a syslog-ng config atszerkesztese (ahogy wildy is mondta):
unix-stream("/var/chroot/ntp/dev/log");
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
jogos :)
- A hozzászóláshoz be kell jelentkezni
mkfifo
---
Reactor error - core dumped!
- A hozzászóláshoz be kell jelentkezni