Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Per Cronjob User in chroot einfügen???

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
flopa
Newbie
Newbie
Beiträge: 2
Registriert: 7. Aug 2005, 15:39

Per Cronjob User in chroot einfügen???

Beitrag von flopa »

Servus,

ich habe nen Server auf dem Confixx läuft. Leider überschreibt Confixx ja ständig die chroot datei. Nun möchte ich einen Cronjob einrichten welcher dann alle paar Minuten halt den User wieder in die chroot einträgt.
Wie stelle ich das an? Also nicht den Cronjob, das kriege ich hin. Aber das Script, welches ich brauche um in die chroot eine Zeile einzufügen ohne andere zu verändern oder zu löschen. Das bekomme ich nicht hin.

Danke!
Benutzeravatar
Linux-Guru
Member
Member
Beiträge: 187
Registriert: 25. Apr 2005, 21:23
Wohnort: Weltstadt Hochdorf
Kontaktdaten:

Beitrag von Linux-Guru »

Hi,

Also ich habe hier Perl-Script, mit dem du eine Zeile einfügen kannst (name:insertline):

Code: Alles auswählen

#!/usr/bin/perl
if (@ARGV !=3) { die "syntax: $n insertline linenumber file newtext\n"}
($ln,$file,$newtext)=@ARGV;
print "Insert in $ln at  $file $newtext\n";
open(IN,$file);   @zeilen=<IN>; close(IN);
open(OUT,">$file");
$n=0;
foreach $zeile(@zeilen)
{
  $n++;
  if ($n==$ln) {print OUT "$newtext\n";}
  print OUT $zeile;
}
close(OUT);
Mit diesem Script kannst du Zeilen ersetzen (name:replaceline):

Code: Alles auswählen

#!/usr/bin/perl

($file,$key,$newval)=@ARGV;
open(IN,$file);   @zeilen=<IN>; close(IN);
open(OUT,">$file");
foreach $zeile(@zeilen)
{
  $i=index($zeile,$key);
  printf "%3d:%s",$i,$zeile;
  if ($i==0)
   {
     print "###:^diese Zeile ersetzen mit\nneu:$val\n";
     print OUT "$newval\n";
   }
  else
   {print OUT $zeile; }
}
close(OUT);
Mit diesem Script kannst du Wörter ersetzen (name:replacewords):

Code: Alles auswählen

#!/usr/bin/perl
if (@ARGV !=3) { die "syntax: $n replacewords file oldword newword\n"}
($file,$oldword,$newword)=@ARGV;
print "Ersetze in $file $oldword durch $newword\n";
open(IN,$file);   @zeilen=<IN>; close(IN);
open(OUT,">$file");
foreach $zeile(@zeilen)
{
  $zeile=~ s/$oldword/$newword/g;
  print OUT $zeile;
}
close(OUT);
Mit diesem Script kannst du "keys" ersetzen (name:replacekeys):

Code: Alles auswählen

#!/usr/bin/perl
if (@ARGV !=3) { die "syntax: replacekey file key newval\n"}
($file,$key,$newval)=@ARGV; $lenkey=length($key);
print "Setze in $file $key auf $newval\n";
open(IN,$file);   @zeilen=<IN>; close(IN);
open(OUT,">$file");
foreach $zeile(@zeilen)
{
  if ( substr($zeile,0,$lenkey) eq $key)
    { $newline="$key=\"$newval\"\n";
      print "replace key:\n $zeile $newline\n";
      print OUT $newline;
    }
  else
    {print OUT $zeile;}
}
close(OUT);
Ich hoffe, ich konnte mit meinen Perlscripten dir helfen!!!
Gruß
Linux - Guru
flopa
Newbie
Newbie
Beiträge: 2
Registriert: 7. Aug 2005, 15:39

Beitrag von flopa »

Nö leider gar nicht :( Bin absoluter anfänger was scripting angeht. Also wie müsste das aussehen wenn in die etc/chroot Datei in die erste oder letzte Zeile z.b. flo eingefügt werden soll?
Benutzeravatar
Linux-Guru
Member
Member
Beiträge: 187
Registriert: 25. Apr 2005, 21:23
Wohnort: Weltstadt Hochdorf
Kontaktdaten:

Beitrag von Linux-Guru »

Also du legest folgendes in einer Datei namens insertline ab. Diese legst du in /usr/local/sbin/ ab. Die Rechte machst mal 755.

Code: Alles auswählen

#!/usr/bin/perl
if (@ARGV !=3) { die "syntax: $n insertline linenumber file newtext\n"}
($ln,$file,$newtext)=@ARGV;
print "Insert in $ln at  $file $newtext\n";
open(IN,$file);   @zeilen=<IN>; close(IN);
open(OUT,">$file");
$n=0;
foreach $zeile(@zeilen)
{
  $n++;
  if ($n==$ln) {print OUT "$newtext\n";}
  print OUT $zeile;
}
close(OUT); 
So nun kommen ich zum Haupteil:

Dies ist dein Script, mit dem du eine Zeile in chroot.conf einfügen kannst (Problem: Du musst die Zeilennummer angeben!):

Code: Alles auswählen

#!/bin/bash

insertline 1 /etc/chroot.conf "hallo"
so müsste es gehen. Das oben ist ein Beispiel dafür!
Gruß
Linux - Guru
Antworten