vi und nvi auf der Fritzbox

haveaniceday

Aktives Mitglied
Mitglied seit
14 Okt 2004
Beiträge
1,305
Punkte für Reaktionen
0
Punkte
36
Wurde in einem anderen Thread gefragt...

Achtung:
  • Es ist einfach die Box mit vi "tot zu legen".
    Mit nvi geht es noch schneller ! nvi überschreibt auch, wenn man nichts geändert hat.
    Einzige "Abbruchmöglichkeit": noch während nvi gestartet ist "Stecker" ziehen.
  • Für die "Text" Dateien unter /var/flash/ auf der Box kann man "nvi <file>" nutzen.
    nvi kopiert die Dateien aus dem Flash passend um.
  • Nie Dateien unter /proc/* mit vi oder nvi editieren. Er sei den ihr wollt einen Briefbeschwerer
  • Nicht alle Befehle sind in der Box verfügbar !

Note:
  • It's very easy to corrupt the box with vi.
    It's even faster possible with nvi ! nvi overwrites values also if you did not do any changes.

    Only way to stop this: unplug the power _during_ the start of nvi.
  • You can use nvi to edit the text files at /var/flash/
    nvi copies the file from flash to /var/tmp/, edit them with vi and
    is writing the files back indepentand of the changes.
  • Never edit files of /proc/* with vi or nvi. Except you want to create a paperweight.
  • Not all commands of vi are available. It's a busybox vi.

Einziger Notausgang bei nvi: Stecker ziehen !!
Only possible emergency action: unplug the power !


Notausgang bei vi: zweimal "<esc>" dann :q! sollte immer gehen.
Im Zweifelsfall immer machen und neu editieren.
Vi reagiert manchmal "allergisch" auf Cursor oder sonstige Tasten !



Hab die Bedienung von vi nur in "english" in einer alten Mail gefunden.

vi has 2 modes:
- command mode
- editing mode

Advantage of vi: is at every UNIX available ( default: installed )
  • normally you are in the command mode
    => nearly each single character does an action
    => very confusing if you press key
  • back from editing mode to command mode
    <ESC> ( sometime two times )

    => can give critical situation with "cursor" or function keys.
    => Works only proper if varialbe "TERM" is set right
    => can also fail for modem lines, because of "timing"
    Cause:
    A function key is a "multiple key" like <ESC>[A
    => press key => <ESC> switch to "command mode"
    => [A is interpreted as a command ..
    => oops situation

Some samples of commands in command mode:

i => insert at current position
x => delete character below cursor
cw => change word ( word ends at "not normal character )
After word changed => press <ESC> => normal command mode
o => open new line below current line
O => open new line above current line
Y => take line to buffer ( 12Y => take next 12 lines to buffer )
P => put buffer above current line
p => put buffer below current line
dd => delete current lint
dw => delete word

/<string> => look forward for <string>
/ => look again
?<string> => look backwards for string
? => look backwards for last search
C => change rest of the line ( finish with <ESC> )
D => delete rest of the line
A => append to end of line
a => append after current character

<address>G => go to line <address>
1G => go to beginning of file
$G => go to last line


<ctrl>f => go to next page
<ctrl>b => go to previous page


: => go to command line

At command line:
w => write file
q => quit
q! => quit if you did changes and do not want to save
%s/string/replace/g => replace at whole file "string" with "replace"
12,16s/string/replace/ => replace from line 12 to 16 ( no "g" only first in a line is replaces )
f => show file name and position
e! => read file again ( discard changes )
set list => show tabs as "^I" and line end as "$"
set nolist => turn set list off

Edit: deutlichere nvi-Warnung, add some more translation
 

olistudent

IPPF-Urgestein
Mitglied seit
19 Okt 2004
Beiträge
14,779
Punkte für Reaktionen
10
Punkte
38

80933

Neuer User
Mitglied seit
31 Okt 2004
Beiträge
55
Punkte für Reaktionen
0
Punkte
6
sehr nützlich, genau was ich gesucht habe kann ich nur jedem empfehlen
 

rannseier

Aktives Mitglied
Mitglied seit
5 Mai 2004
Beiträge
986
Punkte für Reaktionen
0
Punkte
0
Gibts eigentlich ein "joe" für die Box?


MfG,
Karl
 

haveaniceday

Aktives Mitglied
Mitglied seit
14 Okt 2004
Beiträge
1,305
Punkte für Reaktionen
0
Punkte
36
Aus Platzgründen nicht. Ist wahrscheinlich von AVM aus
sowieso uninteressant einen Editor beizupacken.

Haveaniceday.
 

Temp

Neuer User
Mitglied seit
2 Jan 2005
Beiträge
29
Punkte für Reaktionen
0
Punkte
0
sorry kleine frage....
wo ist denn jetzt genau der unterschied zwischem nvi und vi?

nvi kopiert um ? :) Wie meinste das denn?

Gruß Temp
 

haveaniceday

Aktives Mitglied
Mitglied seit
14 Okt 2004
Beiträge
1,305
Punkte für Reaktionen
0
Punkte
36
vi ist ein "UNIX" Standard Editor. Ich habe noch nie ein UNIX ohne dieses Editor gesehen.

In der Fritzbox sind die Konfigurationsdateien keine normalen Dateien.

# cd /var/flash
# ll
crw-r--r-- 1 root root 254, 113 Sep 8 2002 ar7.cfg
crw-r--r-- 1 root root 254, 98 Sep 8 2002 debug.cfg
crw-r--r-- 1 root root 254, 132 Sep 8 2002 fx_cg
crw-r--r-- 1 root root 254, 129 Sep 8 2002 fx_conf
crw-r--r-- 1 root root 254, 99 Sep 8 2002 fx_def
crw-r--r-- 1 root root 254, 130 Sep 8 2002 fx_lcr
crw-r--r-- 1 root root 254, 131 Sep 8 2002 fx_moh
crw-r--r-- 1 root root 254, 112 Sep 8 2002 multid.leases
crw-r--r-- 1 root root 254, 117 Sep 8 2002 net.update
crw-r--r-- 1 root root 254, 116 Sep 8 2002 stat.cfg
crw-r--r-- 1 root root 254, 133 Sep 8 2002 telefon_misc
crw-r--r-- 1 root root 254, 114 Sep 8 2002 voip.cfg
crw-r--r-- 1 root root 254, 115 Sep 8 2002 wlan.cfg
Dieses ist sichtbar an dem "c" am Anfang. ( character special file ) vi ist nicht in der Lage solche Dateien korrekt zu bearbeiten !

"nvi" ist ein Skript von AVM welches das "special" file in eine normale Datei umkopiert und diese normale Datei dann mit vi bearbeitet. Nach
dem Beenden vom vi kopiert dieses "wrapper Skript" die Datei zurück in das character special file.


Diese "character special files" können normalerweise nur mit speziellen Programmen sinnvoll bearbeitet werden.
Dieser Dateityp wird normalerweise von hardwarenahen Treibern genutzt.

Das nur ein Teil der Dateien unter /var/flash/ mit nvi bearbeitet werden können ist ein Sonderfall.

Nie: andere "c" Dateien mit nvi oder anderem bearbeiten ! Ausser du hast eine kompetente Auskunft dass dieses geht !

Viele Grüße,

Haveaniceday
 

Temp

Neuer User
Mitglied seit
2 Jan 2005
Beiträge
29
Punkte für Reaktionen
0
Punkte
0
ah super :)
vielen dank.
Jetzt wirds klar :)

Thx
Grüße Temp
 

maf-soft

Neuer User
Mitglied seit
19 Jan 2005
Beiträge
96
Punkte für Reaktionen
0
Punkte
0
haveaniceday schrieb:
Notausgang: zweimal "<esc>" dann :q! sollte immer gehen.
nicht immer: wenn man versehendlich nvi mit einer datei gestartet hat, die nicht in /var/flash/ liegt, hilft auch kein :q! - dann hat man den angesprochenen briefbeschwerer.

wem das als nächstes passiert, sollte vielleicht mal versuchen, sofort die box auszumachen, anstatt vi zu beenden. ich könnte mir vorstellen daß das hilft.

wo und wie kann man sich eigentlich das nvi script ansehen? (bin linux neuling)
 

digi-daddler

Mitglied
Mitglied seit
3 Nov 2004
Beiträge
270
Punkte für Reaktionen
0
Punkte
16
maf-soft schrieb:
wo und wie kann man sich eigentlich das nvi script ansehen? (bin linux neuling)
du fragst:
which nvi
antwort: /pfad/von/nvi
more /pfad/von/nvi
 

maf-soft

Neuer User
Mitglied seit
19 Jan 2005
Beiträge
96
Punkte für Reaktionen
0
Punkte
0
danke, wieder was gelernt.

cat $1 >/var/nvi.tmp && vi /var/nvi.tmp && cat /var/nvi.tmp >$1
rm -f /var/nvi.tmp

gibt vi irgendwie zurück ob was geändert wurde? wenn ja wie frage ich das ab, bzw. schreibe obiges so um, daß nur in dem fall auch die tmp-datei zurückkopiert wird?
 

clueless

Mitglied
Mitglied seit
7 Mai 2005
Beiträge
243
Punkte für Reaktionen
0
Punkte
0
Weitere Moeglichkeit, ohne die Box ausschalten zu muessen:

vi mit CTRL-Z in den Hintergrund schicken, dann ueber ps | grep vi die Process ID ermitteln (erste Zahl in der Zeile), und dann den Prozess mittels kill -9 <ProcessID> abschiessen.
 

CuBe_X

Neuer User
Mitglied seit
21 Apr 2005
Beiträge
68
Punkte für Reaktionen
0
Punkte
0
Aha, das ist interessant :idea:
Wie bekomme ich bloss bei der 7050 FW .62 die debug.cfg editiert :?: :?:
Es kommt sowohl mit vi als auch mit nvi die Meldung: 'cat: /var/flash/debug.cfg: No such file or directory'. *grübel*
 

haveaniceday

Aktives Mitglied
Mitglied seit
14 Okt 2004
Beiträge
1,305
Punkte für Reaktionen
0
Punkte
36
Hi CuBe_X

original existiert diese Datei nicht. Was man sieht ist nur das "Special File"

Anlegen und auch leeren der Datei:
echo > /var/flash/debug.cfg

Viele Grüße,

Haveaniceday
 

CuBe_X

Neuer User
Mitglied seit
21 Apr 2005
Beiträge
68
Punkte für Reaktionen
0
Punkte
0
Vielen Dank für die vielen freundlichen Auskünfte ;)

Nur dieses frage ich mich noch...

Die ar7.cfg existiert auf meiner Box mehrfach, nämlich (herausgefunden mit "find / -name ar7.cfg"):

/etc/default.Fritz_Box_FON_2_WLAN/1und1/ar7.cfg
/etc/default.Fritz_Box_FON_2_WLAN/avm/ar7.cfg
/var/flash/ar7.cfg

Die debug.cfg gibt es jedoch nur einmal, nämlich
/var/flash/debug.cfg

Wozu ist dann das character Device vorhanden wenn es eigentlich keine debug.cfg gibt?
Wozu werden an dieser Stelle überhaupt character Devices benutzt? Irgendwie fehlt mir da noch der Durchblick :roll:

Hab Dank im Voraus ;)
 

haveaniceday

Aktives Mitglied
Mitglied seit
14 Okt 2004
Beiträge
1,305
Punkte für Reaktionen
0
Punkte
36
Hi CuBe_X,

die ar7.cfg Dateien unter /etc/* sind die default Dateien für "nach Werksreset".
Die Ablage der Dateien ist nach meinem Verständnis folgende:

- AVM tffs-Filesystem => Treiber für character device : major/minor: c 254/*
AVM nutzt mtd3 und mtd4 um das tffs zu speichern.
- "Special files" angelegt mit mknod <filename> c 254 * sprechen den Treiber an.
- Anlegen per mknod geschieht beim Boot

Der Filesystemtreiber ist also unabhängig von der Sichtbarkeit, genauso kann
per "mknod..." ein special File angelegt sein, ohne dass das File in dem Filesystem existitiert.

Deshalb sieht man /var/flash/debug.cfg immer. Eventuell existiert die Datei beim
Bearbeiten mit nvi nicht.

Haveaniceday
 

targa

Mitglied
Mitglied seit
6 Mrz 2005
Beiträge
285
Punkte für Reaktionen
0
Punkte
16
maf-soft schrieb:
cat $1 >/var/nvi.tmp && vi /var/nvi.tmp && cat /var/nvi.tmp >$1
rm -f /var/nvi.tmp
evtl. sollte man als erste zeile noch

cat $1 >/var/backup.tmp

einfügen, so dass man immernoch eine sicherungskopie hat. Evtl. eine Abfrage ob der filetype richtig ist?!

//to.
 

haveaniceday

Aktives Mitglied
Mitglied seit
14 Okt 2004
Beiträge
1,305
Punkte für Reaktionen
0
Punkte
36
Filetypabfrage ist nicht in der busybox ( Platz.. )
Backup: "Aufräumen" hat bei mir Vorrang. Ist aber eine Geschmackssache...

Haveaniceday
 

johnyt11

Neuer User
Mitglied seit
27 Aug 2004
Beiträge
120
Punkte für Reaktionen
0
Punkte
16
gibts in der FBF ein Befehl wie dir ?
 

3CX PBX - GRATIS
Linux / Win / Cloud

Statistik des Forums

Themen
232,379
Beiträge
2,021,770
Mitglieder
349,985
Neuestes Mitglied
orkinos