yafc steht fuer yet another ftp client. Er wird ebenfalls unter Konsole bedient und bestitzt zudem noch folgende Features:

  • Verzeichnislistening aus dem Cache.

  • Erweiterte <TAB> - Vervollstaendigung (Datei- und Verzeichnissnamen)

  • Mehrere ftp - Sessions

  • Automatischen Verbindungsaufbau nach einem Timeout.

  • Aliase.

  • Farbiges ls.

  • Automatisches Login und Bookmarks.

  • Kerberos Support.

  • SFTP - Support (SSH2).

  • Rekursives get, put, fxp, rm und ls.

  • nohup mode fuer get und put

  • Queueing von Dateien, damit sie spaeter hoch- bzw. runtergeladen werden koennen.

  • Umleitungen auf lokale Kommandos oder Dateien (>, >> und |).

  • Proxys.

  • Anpassbarer Prompt.

  • Anpassbare Statusmeldungen.

Download und Installation der Quellen

Ich gehe hier auf die Installation der Sourcen ein. Bei Free-, Net- und OpenBSD findet man yafc in der Portcollection. Zuerst benoetigen wir also die Sourcen. Diese findet man auf der Projectpage bei Sourceforge (http://yafc.sourceforge.net/). Die aktuelle Version (Stand 15.06.03) ist 1.0. Nachdem wir das Archiv runtergeladen haben, wird es mit

# tar -xvzf yafc-1.0.tar.gz

entpackt. Anschlieszend wechseln wir in das neu erstellte Verzeichnis und geben dort

$ ./configure --help

ein um uns die zur Verfuegung stehenden Optionen ausgeben zu lassen. Mit welchen Optionen man configure letztendlich aufruft, haengt von den eigenen Beduerfnissen ab. Ich habe (unter OpenBSD 3.2) folgende angegeben:

$ ./configure --with-krb4 --with-krb5 --with-pic --with-readline --with-socks

Nachdem das Makefile durch configure erstellt worden ist, kann man die Sourcen kompilieren und yafc installieren. Das geschiet mit

$ make && make install

Startparameter

Man kann yafc schon beim Start mit verschiedenen Parametern aufrufen. Eine Auflistung und kurze Erklaerung folgt jetzt.

-a (--anon) Hier wird ein Anonymous - Login gestartet. Die Email - Addresse wird zuerst in der Konfigurationsdatei gesucht (zuerst wird die /etc/yafcrc und danach die ~/.yafc/yafcrc gelesen). Wenn sie dort nicht definiert wurde, wird sie in der Variable $EMAIL (hat die irgendwer gesetzt?) gesucht. Sollte sie dort auch nicht gefunden werden, dann wird sie aus dem lokalem User- und Hostnamen zusammengesetzt.

-d (--debug)

Hier wird yafc im Debug-Mode gestartet. Hier werden alle Strings ausgegeben, die an den Server gesendet bzw. vom Server empfangen werden.

-D (--dump-rc)

Hier wird die Konfigurationsdatei nach stdout geschrieben (fuer Leute die keinen Pager haben sigh).

-m (--mechanism=MECH)

Hier kann man angeben wie man sich auf dem Server einloggen will. Zur Auswahl steht hier "krb4", "krb5" oder "none".

-n (--norc)

Keine Konfigurationsdatei verwenden.

-p (--noproxy)

Keinen Proxy verwenden (auch wenn in der Konfigurationsdatei einer angegeben wurde).

-q (--quiet)

Per Default zeigt yafc beim Start eine kurze Meldung mit dem Copyright an. Mit dem Parameter kann man dies unterbinden.

-r /path/to/file (--rcfile=/path/to/file)

Hier kann man eine alternative Konfigurationsdatei angeben.

-t /path/to/file (--trace)

Hier kann man die trace - Datei angeben. In diese Datei werden die Strings protokolliert, die an den Server gesendet bzw. empfangen werden.

-u (--noauto)

Hier wird der automatische Login unterbunden.

-v (--verbose)

Sollte klar sein.

-w (--wait=zeit)

Hier kann man die Zeit angeben, die zwischen den Verbindungsversuchen gewartet werden soll.

-W (--workdir=/path/to/DIR)

Hier kann man ein alternatives Verzeichnis angeben, in dem yafc die Konfigurations- und tempoaeren Dateien anlegen / suchen soll.

-V (--version)

Auch klar.

-h (--help)

Logisch oder?.

Konfigurationsvariablen

Es stehen folgende Variablen zur Verfuegung (Kommentare werden mit # eingeleitet):

autologin no # oder yes

Hier kann man das automatische Login unterbinden (siehe bookmarks).

autoreconnect on # oder off

Hier kann man den automatischen Verbindungsaufbau aktivieren oder unterbinden.

quit_on_eof yes # oder no

Wenn yes gesetzt ist, kann man die Session mit CRTL-D beenden.

read_netrc yes # oder no

Hier kann man angeben ob die $HOME/.netrc gelesen werden soll oder nicht.

use_passive_mode yes # oder no

Hier kann man angeben ob der passive-mode verwendet werden soll oder nicht.

reverse_dns yes # no

Sollte klar sein.

waiting_dots on # off

Wenn on gesetzt ist, werden Datei- und Verzeichnissnamen mit angegeben waehrend das Directorylistening noch aktiv ist.

cache_timeout 60 # Zeit in Sekunden

Hier kann man die Zeit angeben, nach wieviel Sekunden nicht mehr aus dem Cache gelesen werden soll. 0 (Null) steht fuer immer (es wird also immer aus dem Cache gelesen).

verbose on #off

Hier kann man die ausfuehrlichen Meldungen ein- oder ausschalten.

debug on #off

Siehe oben, nur diesmal fuer Debugging.

ssh_program "/path/to/ssh"

Hier kann man den Pfad zu SSH angeben (es wird nur SSH2 unterstuetzt).

sftp_server_program "/path/to/sftp-server"

Hier kann man den Pfad zum sftp - Server angeben.

use_env_string no # yes

Wenn yes gesetzt ist, taucht yafc in ps aus.

remote_completion yes # no

Hier kann man angeben ob die Datei- und Verzeichnisnamen vervollstaendigt werden sollen.

auto_bookmark yes # no | ask

Hier kann man angeben ob die aktuelle Verbindung ge’bookmark’t werden soll.

auto_bookmark_save_password yes # no

Hier kann man angeben ob die Passwoerter gespeichert werden sollen (chmod 0600 nicht vergessen!).

auto_bookmark_silent yes # no

Hier kann man die Nachricht Bookmark saved .. unterdruecken.

default_type binary # oder ascii

Hier kann man den Type fuer Transfers angeben.

default_mechanism krb4 # oder default_mechanism "krb4:krb5:none"

Hier kann man Kerberos verwenden.

ascii_transfer_mask "file:*.suffix:*.suffix1"

Hier kann man angeben welche Dateien man immer im Ascii - Modus uebertragen will (interessant fuer Perl - Scripte).

beep_after_long_command yes # oder no

Hier kann man angeben ob nach einem "langem" Kommando ($ mput 1 2 3 4 5 ..) ein Beep kommen soll.

long_command_time 60 # Zeit in Sekunden

Hier kann man definieren nach wieviel Sekunden ein Kommando ein "langes Kommando" ist.

connection_timeout 23 # Zeit in Sekunden

Auch klar.

connect_attempts 42

Hier kann man die Anzahl der Verbindungsversuche einstellen.

connect_wait_time 42 # Zeit in Sekunden

Damit wird die Zeit festgelegt, die zwischen den Verbindungsversuchen gewartet werden soll.

use_history yes # oder no

Hier kann man angeben ob die History ($HOME/.yafc/history) verwendet werden soll oder nicht.

history_max 31337

Hier kann man Laenge der History definieren (Angabe in Zeilen).

startup_local_directory /path/to/DIR

Das ist ueberlebenswichtig!!!!11! Erstellt ein Verzeichnis in dem ihr eure zukunftigen Downloads speichern wollt und gebt hier den Pfad an. Sobald dann yafc gestartet wird, wechselt er automatisch in der Verzeichnis und alles Downloads werden dort gespeichert.

nohup_mailaddress email@foo.bar

Hier kann man eine Email - Addresse angeben, an die eine Mail geschickt wird, wenn ein nohup - Down- oder Upload beendet worden ist.

sendmail_path "/path/to/sendmail"

Wird nur benoetigt, wenn nohup_mailaddress verwendet wird.

prompt1, prompt2, prompt3 string
  • prompt1 ist der Prompt, der angezeigt wird, wenn man yafc gestartet hat, aber noch keine Verbindung aufgebaut hat.

  • prompt2 wird angezeigt, wenn man verbunden, aber noch nicht eingeloggt ist.

  • prompt3 wird angezeigt wenn man verbunden und eingeloggt ist.

      %u  Username.
      %h  Der remote Hostname.
      %H  '%h' aber erst nach dem ersten '.' (Punkt).
      %m  Der remote machine - Name (die Ausgabe von 'gethostbyname').
      %M  Siehe oben.
      %n  Die remote IP.
      %w  Das aktuelle Verzeichnis.
      %W  Siehe oben.
      %~  Siehe '%w', aber das Homedirectory wird durch '~' (Tilde) abgekuertzt.
      %l  Das aktuelle Verzeichnis (lokal).
      %L  Siehe oben.
      %c  Die aktuell offenen Verbindungen.
      %C  Die aktuell aktiven Verbindungen.
      %%  Ein '%'.
      %#  Wenn man root ist (lokal) wird ein '#' und ansonsten ein '$' angezeigt.
      %{  Einleitung von Escape - Sequenzen.
      %}  Ende einer Escape - Sequenz.
      \e  Eine Escape - Sequenz (hex 0x1B).
      \n  Neue Zeile ('newline').
      \t  Tabulator.
transfer_begin_string string

Dieser String wird ausgegeben bevor der aktuelle Transfer beginnt. Man kann auch diese Ausgabe formartieren. Hier stehen folgende Variablen zur Verfuegung:

%r  Der Dateiname.
%R  Der Dateiname mit dem absolutem Pfad.
%l  Der Dateiname unter dem er gespeichert wird.
%L  Siehe oben, nur diesmal mit Ausgabe des absolutem Pfades.
%s  Die Groesze die noch uebertragen werden musz.
%S  Die tatsaechliche Groesze.
%e  Die verbleibende Zeit.
%b  Die Transferrate (Bps).
%B  Die Transferrate (Bsp) oder 'stalled'.
%t  Die Zeit seit Beginn des Transfers.
%v  Die "visual progress bar" (Fortschrittsanzeige).
transfer_string string

Der String wird ausgegeben, waehrend der Transfer laeuft. Zur Formatierung kann man die oben genannten Variablen verwenden.

transfer_end_string string

Dieser String wird ausgegeben wenn der Transfer beendet ist. Auch hier kann man die Variablen von transfer_begin_string zur Formatierung verwenden.

transfer_xterm_string string

Hier kann man (wenn das $TERM mit xterm_title_terms gesetzt wurde) den Transfer - Status im Titles des $TERM’s anzeigen lassen.

tilde yes # oder no

Hier wird - wenn yes gesetzt wird - der absolute Pfad zum Homedirectory durch eine ~ (Tilde) abgekuerzt.

xterm_title(1|2|2) string

Analog zu prompt(1|2|3); es stehen auch die gleichen Variablen zur Verfuegung.

Aliase

Man kann - wie auch unter der $SHELL - Aliase definieren. Diese kann man entweder in der Konfigurationsdatei setzen oder direkt am Prompt definieren. Mal einige Beispiele:

# alias ls "ls -F --color"
# alias pls "ls %1 | less"

%1 ist hier das erste Argument, das ls uebergeben wird.

Farben

Zur Formatierung der Prompts stehen auch Farben zur Verfuegung. Diese werden als ANSI Escape - Sequenzen angegeben. Welche zur Verfuegung stehen und wie man diese anwendet, findet man in den Manual - Seiten seiner $SHELL… maybe.

Bookmarks

Mit yafc ist es moeglich Bookmarks zu verwenden. Diese werden entweder aus der $HOME/.netrc oder aus der /.yafc/bookmarks gelesen. Mal einige Beispiele und eine kurze Erklaerung dazu:

default login anonymous

Per Default als anonymous einloggen und den Prompt fuer die Passwortabfrage anzeigen.

default anonymous

Automatischer Login; die Passworteingabe ist nicht noetig.

machine .brainstop.42 login bofh

Hier wuerde sich yafc auf allen Hosts der Domain brainstop.42 einloggen und als Username bofh verwenden.

machine brainstop.foo.bar login p0rn cwd ~/42

Loggt sich auf dem Host brainstop.foo.bar mit dem Username p0rn ein und wechselt in das Verzeichnis 42.

machine ftp.foobar.23:31337 anonymous

Loggt sich als anonymous ueber Port 31337 auf dem Server ftp.foobar.23 ein.

Eintraege in der ~/.yafc/bookmarks koennen z. B wie folgt aussehen:

machine ftp://ftp.openbsd.org:21 alias 'openbsd' anonymous
machine ftp://ftp.nsa.gov:42 alias 'wtc' login hoover password foo31337bar