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
 
sehr nützlich, genau was ich gesucht habe kann ich nur jedem empfehlen
 
Gibts eigentlich ein "joe" für die Box?


MfG,
Karl
 
Aus Platzgründen nicht. Ist wahrscheinlich von AVM aus
sowieso uninteressant einen Editor beizupacken.

Haveaniceday.
 
sorry kleine frage....
wo ist denn jetzt genau der unterschied zwischem nvi und vi?

nvi kopiert um ? :) Wie meinste das denn?

Gruß Temp
 
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
 
ah super :)
vielen dank.
Jetzt wirds klar :)

Thx
Grüße Temp
 
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)
 
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
 
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?
 
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.
 
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*
 
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
 
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 ;)
 
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
 
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.
 
Filetypabfrage ist nicht in der busybox ( Platz.. )
Backup: "Aufräumen" hat bei mir Vorrang. Ist aber eine Geschmackssache...

Haveaniceday
 
gibts in der FBF ein Befehl wie dir ?
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.