• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Per Cronjob User in chroot einfügen???

flopa

Newbie
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!
 
Hi,

Also ich habe hier Perl-Script, mit dem du eine Zeile einfügen kannst (name:insertline):
Code:
#!/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:
#!/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:
#!/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:
#!/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!!!
 
OP
F

flopa

Newbie
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?
 
Also du legest folgendes in einer Datei namens insertline ab. Diese legst du in /usr/local/sbin/ ab. Die Rechte machst mal 755.

Code:
#!/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:
#!/bin/bash

insertline 1 /etc/chroot.conf "hallo"

so müsste es gehen. Das oben ist ein Beispiel dafür!
 
Oben