Wake on LAN per CGI-Script aus dem Webmenu der FBF

Re

Ok ihr scheint ja eigentlich ganz fit in CGI und co zu sein, ich kapier nicht ganz was dann das Problem ist?
Sucht ihr einfach eine Lösung wo ich per Image hochlad und die dann auf anhieb funzt also ein Image nachdem ich dann auf ne Webseite auf meiner FB geh und da meien Mac eintrag???

MFG

Maruu
 
Hi, Maruu.
Ich hoffe, dass ich deine Frage richtig verstanden habe. ;-)
Der Sinn hiervon ist, dass du ohne das Image zu ändern, ein eigens CGI-Skript bereitstellen kannst. Es geht sogar soweit, dass man eine eigen Webpage erstellen und aufrufen kann, ohne dass man Image was ändern muss!!!
Hier ist ein Beispiel wie es aussehen könnte. Man müsste dann im CGI-Skript nur noch den $QUERY_STRING auswerten und etherwake damit aufrufen...

MfG Oliver

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"	"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>


<title>FRITZ!Box</title>
<meta http-equiv=content-type content="text/html; charset=iso-8859-1">
<meta http-equiv="expires" content="0">
<style type="text/css">
<!--
body {
	background-color: white;
	margin: 0px 0px;
}
p, table, form, div, textarea, label {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 10pt;
	padding: 0px 0px;
	border: 0px 0px;
	margin: 0px 0px;
	color: black;
}
table {border-collapse: collapse;}
tr {text-align: left;}
a { text-decoration: none; }
a:hover { text-decoration: underline; }
a:link { color: black }
a:visited { color: black }
.errorMessage {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 10pt;
	font-weight: bold;
	color: #CC0000;
	text-align: center;
	margin: 5px;
	padding: 2px;
	background-color: white;
}
.Dialogtitel { color: black; font-weight: bold; background-color:#D6EBFF }
.Dialoglabel { color: black; background-color:#E9F1FE }
.Dialoglabelfett { font-weight: bold; color: black; background-color:#E9F1FE }
.DialogFehler { font-weight: bold; color: #CC0000; background-color:#E9F1FE }
.Dialogtext { color: black; background-color:#E9F1FE }
.Dialoglist { color: black; background-color:#FBFDFF }
.Minititel { font-size: 9pt; color: black; background-color:#E9F1FE }
.Minilabel { font-size: 9pt; color: black; background-color:#E9F1FE }
.Minitext { font-size: 9pt; color: black; background-color:#FBFDFF }
.Eingabefeld { }
.Pushbutton { color: black; width: 100px }
.Pushbuttonfett { font-weight:bold; color:black; width:100px }
.TopMenuitem font-weight: bold; color: black; background-color:#E9F1FE}
.Menuitem { color: black; background-color:#E9F1FE}
.Schatten { background-color: #8BAEC9; }
.Hell { background-color: #FFFFFF; }
h1, h2, h3, h4, h5, h6 { font-size: 10pt; font-weight: bold; }
/* Stile für den Rahmen */
#Kopfmenu {
	height: 100px;
	width: 195px;
	background-image: url("../html/de/images/kopf1.gif");
	border: 0px;
	background-position: top;
	background-repeat: no-repeat;
	padding: 0px;
}
#Kopfdata {
	height: 100px;
	width: 600px;
	background-image: url("../html/de/images/kopf2.gif");
	border: 0px;
	background-position: top;
	background-repeat: no-repeat;
	padding: 0px;
}
#Fussmenu {
	height: 50px;
	width: 195px;
	background-image: url("../html/de/images/fuss1.gif");
	border: 0px;
	background-position: top;
	background-repeat: no-repeat;
	padding: 0px;
}
#Fussdata {
	height: 50px;
	width: 600px;
	background-image: url("../html/de/images/fuss2.gif");
	border: 0px;
	background-position: top;
	background-repeat: no-repeat;
	padding: 0px;
}
.Schattenrechts {
	width: 13px;
	background-image: url("../html/de/images/schattenrechts.gif");
	border: 0px;
	background-position: top;
	background-repeat: y-repeat;
	padding: 0px;
}
#Menuspalte {
	width: 195px;
	background-image: url("../html/de/images/menuback.gif");
	background-repeat: y-repeat;
	vertical-align: top;
	text-align: center;
	padding: 0px;
}
#Dataspalte {
	width: 600px;
	height: 400px;
	padding-bottom: 15px;
	background-image: url("../html/de/images/dialogback.gif");
	background-repeat: y-repeat;
	vertical-align: top;
	text-align: center;
	padding: 0px;
}
.tMinihell {
	height: 12px;
	font-size: 9pt;
	background-color:#FBFDFF;
}
.tMinidunkel {
	height: 12px;
	font-size: 9pt;
}
/* Menü per List */
ul.LMenu {
	width: 195px;
	padding: 0px;
	margin: 0px;
	text-align: left;
	list-style-type: none;
}
ul.LMenu li.LMenuitem {
	height: 24px;
	background-image: url("../html/de/images/menuitem.gif");
	font-size: 9pt;
	font-weight:bold;
}
ul.LMenu li.LMenuitem img{
	position: relative;
	top: 5px;
	left: 35px;
}
ul.LMenu li.LMenuitem a {
	position: relative;
	top: 5px;
	left: 35px;
	font-family: Arial, Helvetica, sans-serif;
}
ul.LMenu li.LMenuitemaktiv {
	height: 24px;
	background-image: url("../html/de/images/menuitemaktiv.gif");
	font-size: 9pt;
	font-weight:bold;
}
ul.LMenu li.LMenuitemaktiv img{
	position: relative;
	top: 5px;
	left: 35px;
}
ul.LMenu li.LMenuitemaktiv a {
	position: relative;
	top: 5px;
	left: 35px;
	font-family: Arial, Helvetica, sans-serif;
}
ul.LMenu li.LSubitem {
	height:24px;
	background-image: url("../html/de/images/submenuitem.gif");
	background-repeat: no-repeat;
	background-position: top;
	font-size: 9pt;
	font-weight:normal;
	text-align: left;
}
ul.LMenu li.LSubitem img{
	position: relative;
	top: 5px;
	left: 50px;
}
ul.LMenu li.LSubitem a {
	position: relative;
	top: 5px;
	left: 50px;
	font-family: Arial, Helvetica, sans-serif;
}
ul.LMenu li.LSubitemaktiv {
	height:24px;
	background-image: url("../html/de/images/menuitemaktiv.gif");
	background-repeat: no-repeat;
	background-position: top;
	font-size: 9pt;
	font-weight:normal;
	text-align: left;
}
ul.LMenu li.LSubitemaktiv img{
	position: relative;
	top: 5px;
	left: 50px;
}
ul.LMenu li.LSubitemaktiv a {
	position: relative;
	top: 5px;
	left: 50px;
	font-family: Arial, Helvetica, sans-serif;
}
ul.LMenu li.LMenutop {display:none;}
ul.LMenu li.LMenubottom {display:none;}
ul.LMenu li.LMenutrenner {display:none;}
.LMenudis {
	position: relative;
	top: 5px;
	left: 60px;
	color: #999999
}
.pTitel, .pTitelo {
 	text-align: center;
	font-weight: bold;
	background-color: #B3D5FB;
	padding: 5px 10px;
	margin: 0px;
	border: 1px solid #8AAFD9;
}
.pDialog, .pDialogo, .pDialogb, .pDialogob {
	text-align: left;
	color: black;
	padding: 10px 10px;
	background-color: #E9F1FE;
	border: 1px solid #8AAFD9;
}
.pDialog, .pDialogo, .pTitelo {border-top: 0px;}
.pButtonbar {
	text-align: right;
	padding: 5px 10px;
	background-color: #B3D5FB;
	border: 1px solid #8AAFD9;
	border-top: 0px;
}
/* Hilfeseiten */
.Hilfe {
	margin: auto;
	width: 540px;
}
.Hilfe a {color: black;}
.Hilfe p {
	color: black;
	padding-bottom: 5px;
}
.Hilfe h6, .Hilfe h5, .Hilfe h4, .Hilfe h3, .Hilfe h2, .Hilfe h1 {
	color: black;
	margin: 0px;
	padding: 10px 0px 5px 0px;
}
.Hilfe td {
	color: black;
	padding: 5px 2px;
}
.Hilfe ol {
	list-style-type: decimal;
	margin: 0px 10px 0px 30px;
	padding: 0px;
}
.Hilfe ul {
	list-style-type: disc;
	margin-left: 20px;
	padding: 0px;
}
.Hilfe ul li {
	color: black;
	padding-bottom: 5px;
}
.Hilfe ol li {
	color: black;
	padding-bottom: 5px;
}
.b5 {padding-bottom: 5px;}
.b10 {padding-bottom: 10px;}
.mb5 {margin-bottom: 5px;}
.mb10 {margin-bottom: 10px;}

-->
</style>

<style type="text/css">
<!--
#content {width: 540px; margin: auto;}
#tAnsch td {padding: 2px 4px; text-align: left;}
#tAnsch .Label {width: 95px; vertical-align: top;}
#tAnsch .Text {width: 150px; color: black; vertical-align: top;}
#tPpp td {padding: 2px 4px; text-align: left;}
#tPpp .Label {width: 190px; vertical-align: top;}
#tPpp .Text {width: 290px; color: black; vertical-align: top;}
#tSip td {padding: 2px 4px; text-align: left;}
#tSip .Label {width: 340px; vertical-align: top;}
#tSip .Text {width:160px; color: black; vertical-align: top;}
-->
</style>
<script type="text/javascript">
//-----------------------------------------------------------------------------
//---------------- ../js/jsl.js ---------------------------------------------
//-----------------------------------------------------------------------------
function doLoadPage(id,page)
{
	var handle = document.getElementById(id);
	if (handle!=null) handle.src=page;
}
//-----------------------------------------------------------------------------
function jslIsString(id)
{
	if (document.getElementById(id).value.match("[a-zA-Z0-9_]+")!=null) return true;
	return false;
}
//-----------------------------------------------------------------------------
function jslDoEliminateBlanks(text)
{
	var newText = text;
	while ( newText.indexOf( " ") != (-1)) {
		newText = newText.replace(/ /,"");
	}
	return newText;
}
//-----------------------------------------------------------------------------
function jslGetValue (id) {
	var h = document.getElementById(id);
	if (h != null) return h.value;
	return "";
}
//-----------------------------------------------------------------------------
//	kopiert den Wert eines Html-Elements(id_from) in einem zweiten(id_to)
function jslCopyValue(id_to, id_from) {
	var h1 = document.getElementById(id_to);
	var h2 = document.getElementById(id_from);
	if (h1 != null && h2 != null) h1.value=h2.value;
}
//-----------------------------------------------------------------------------
//	setzt den Wert eines Html-Elements(id) durch direkte Angabe(wert)
function jslSetValue(id, wert) {
	var h1 = document.getElementById(id);
	if (h1 != null) h1.value=wert;
}
//-----------------------------------------------------------------------------
function jslGetChecked (id) {
	var h = document.getElementById(id);
	if (h != null) return h.checked;
	return false;
}
//-----------------------------------------------------------------------------
function jslSetChecked (id, wert) {
	var h1 = document.getElementById(id);
	if (h1 != null) h1.checked = wert;
}
//-----------------------------------------------------------------------------
// Setzt den Wert (to) auf 0 oder 1 abhängig vom checked-Attribut (from)
function jslSetCheckValue (to, from) {
	var h1 = document.getElementById(to);
	var h2 = document.getElementById(from);
	if (h1 == null || h2 == null) {
		return;
	}
	if (h2.checked) {
		h1.value = "1";
	} else {
		h1.value = "0";
	}
}
//-----------------------------------------------------------------------------
// Setzt die Checkbox (to) abhängig vom Wert (from)
function jslGetCheckValue (to, from) {
	var h1 = document.getElementById(to);
	var h2 = document.getElementById(from);
	if (h1 == null || h2 == null) {
		return;
	}
	h1.checked = (h2.value != "0");
}
//-----------------------------------------------------------------------------
function jslDisable(id) {
	var h1 = document.getElementById(id);
	if (h1 != null) h1.disabled=true;
}
//-----------------------------------------------------------------------------
function jslEnable(id) {
	var h1 = document.getElementById(id);
	if (h1 != null) h1.disabled=false;
}
//-----------------------------------------------------------------------------
function jslSetEnabled (id, wert) {
	var h1 = document.getElementById(id);
	if (h1 != null) h1.disabled = !wert;
}
//-----------------------------------------------------------------------------
function jslDisplay(id, toDisplay) {
	var h1 = document.getElementById(id);
	if (h1 != null) {
		if ( toDisplay) h1.style.display="";
		else h1.style.display="none";
	}
}
//-----------------------------------------------------------------------------
function jslFormSetPost(id) {
	document.getElementById(id).method="POST";
}
//-----------------------------------------------------------------------------
function jslFormSetGet(id) {
	document.getElementById(id).method="GET";
}
//-----------------------------------------------------------------------------
function jslFormSubmit(id) {
	UpdateDateTime();
	document.getElementById(id).submit();
}
//-----------------------------------------------------------------------------
function jslGoTo(Menu,Page) {
	if ((Menu!=null) && (Menu!="")) document.getElementById("uiPostMenu").value=Menu;
	if ((Page!=null) && (Page!="")) {
		document.getElementById("uiPostPageName").value=Page;
		document.getElementById("uiPostErrorPageName").value=Page;
	}
	jslFormSetGet("uiPostForm");
	jslFormSubmit("uiPostForm");
}
//-----------------------------------------------------------------------------
//	Menu: Menuname
//	Page: Pagename
//	Titel: Pagetitel
function jslGoToEx(Menu, Page, Titel) {
	jslGoTo(Menu,Page);
}
//-----------------------------------------------------------------------------
function jslFormSubmitEx (Menu, Page, Errorpage) {
	jslSubmitFormEx(Menu, Page, Errorpage);
}
//-----------------------------------------------------------------------------
function jslSubmitFormEx (Menu, Page, Errorpage) {
	if ((Menu!=null) && (Menu!="")) jslSetValue("uiPostMenu", Menu);
	if ((Page!=null) && (Page!="")) {
		jslSetValue("uiPostPageName", Page);
		jslSetValue("uiPostErrorPageName", Page);
	}
	if ((Errorpage!=null) && (Errorpage!="")) {
		jslSetValue("uiPostErrorPageName", Errorpage);
	}
	jslFormSubmit("uiPostForm");
}
//-----------------------------------------------------------------------------
function UpdateDateTime() {
	var date = new Date();
	jslSetValue("uiPostDateTime", Math.floor(date.getTime()/1000) + "," + date.getTimezoneOffset());
}
//-----------------------------------------------------------------------------
function jslSetSpanText(id, text) {
	var elem = document.getElementById(id);
	if (elem != 0) elem.childNodes[0].nodeValue = text;
}
//-----------------------------------------------------------------------------
function SetSpanText(id, text) {
	var elem = document.getElementById(id);
	if (elem != 0) elem.childNodes[0].nodeValue = text;
}
function ConnectDisplay(n) {
	return n=="5" ? g_txtConnect5:g_txtConnect3;
}
//-----------------------------------------------------------------------------
function uiDoCancel() {
	jslGoTo("home", "home");
}
//-----------------------------------------------------------------------------
function uiDoHelp() {
	jslGoTo("help", "hilfe_status");
}
//-----------------------------------------------------------------------------
function uiDoRefresh() {
	jslGoTo("home", "home");
}
function uiDoOnLoad() {
}
function reload() { window.location.reload();} // --></script> 

</head>
<body onload="uiDoOnLoad()">
<table style="margin: auto;">
	<tr><td id="Kopfmenu"></td><td id="Kopfdata"></td><td class="Schattenrechts"></td></tr>
	<tr>
		<td id="Menuspalte">
<ul class="LMenu">
	<li class="LMenutop">
	<li class="LMenuitemaktiv">[img]../html/de/images/pfeil_mini.gif[/img] [url="../cgi-bin/webcm?getpage=../html/de/menus/menu2.html&amp;var:lang=de&amp;var:menu=home&var:pagename=home"]&Uuml;bersicht[/url]

	<li class="LMenuitem">[img]../html/de/images/pfeil_mini.gif[/img] [url="../cgi-bin/webcm?getpage=../html/de/menus/menu2.html&amp;var:lang=de&amp;var:menu=internet&var:pagename=internet&var:activtype=pppoe"]Internet[/url]
	<li class="LMenuitem">[img]../html/de/images/pfeil_mini.gif[/img] [url="../cgi-bin/webcm?getpage=../html/de/menus/menu2.html&amp;var:lang=de&amp;var:menu=fon&var:pagename=foncalls"]Telefonie[/url]
	<li class="LMenuitem">[img]../html/de/images/pfeil_mini.gif[/img] [url="../cgi-bin/webcm?getpage=../html/de/menus/menu2.html&amp;var:lang=de&amp;var:menu=wlan&var:pagename=common"]WLAN[/url]
	<li class="LMenuitem">[img]../html/de/images/pfeil_mini.gif[/img] [url="../cgi-bin/webcm?getpage=../html/de/menus/menu2.html&amp;var:lang=de&amp;var:menu=system&var:pagename=syslog"]System[/url]
	<li class="LMenuitem">[img]../html/de/images/pfeil_mini.gif[/img] [url="../cgi-bin/webcm?getpage=../html/de/menus/menu2.html&amp;var:lang=de&amp;var:menu=help&var:pagename=home"]Hilfe[/url]
	<li class="LMenuitem" style="margin-top:24px">[img]../html/de/images/pfeil_mini.gif[/img] [url="../cgi-bin/webcm?getpage=../html/de/menus/menu2.html&amp;var:lang=de&amp;var:menu=first&var:pagename=direkt"]Einrichtungsassistent[/url]
	<li class="LMenubottom">
[/list]
	</td>
		<td id="Dataspalte">
			<div align=center>
<div id="content">
	<div class="pTitel">Meine Fritz!Box Website</div>
				<div class="pDialogo" style="text-align: left; padding: 5px 10px;">
				<table id="table">
				<tr>
					<td class="Label">Hier ist ein Label</td>
					<td class="Text">Und hier steht Text</td>
				</tr>
				<tr>
					<td class="Label">Label2</td>
					<td class="Text">Text</td>
				</tr>
								<tr>
					<td class="Label">Label3</td>
					<td class="Text">Text</td>
				</tr>
								<tr>
					<td class="Label">Label3</td>
					<td class="Text">Text</td>
				</tr>
			</table>
	</div>
	<div class="pDialog">
		<form method="POST" action="../cgi-bin/hello?Rechner1" id="uiPostForm2">
			<p class="mb10">[b]1. Button[/b]</p>
			<p class="buttonlink"><input type="submit" value="CGI-Skript aufrufen" class="Pushbutton" style="width:240px"></p>
		</form>
	</div>
		<div class="pDialog">
		<form method="POST" action="../cgi-bin/hello?Rechner2" id="uiPostForm3">
			<p class="mb10">[b]2. Button[/b]</p>
			<p class="buttonlink"><input type="submit" value="CGI-Skript aufrufen" class="Pushbutton" style="width:240px"></p>
		</form>
	</div>
	<div class="pButtonbar">
		<input type="button" onclick="reload()" value="Aktualisieren" class=Pushbutton>
		<input type="button" onclick="uiDoHelp()" value="Hilfe" class="Pushbutton" id="buttonHilfe">
</div>
</div>
	</div>
</td>
		<td class="Schattenrechts"></td>
	</tr>
	<tr><td id="Fussmenu"></td><td id="Fussdata"></td><td class="Schattenrechts"></td></tr>
</table>

<form method="POST" action="../cgi-bin/webcm" target="_self" id="uiPostForm">

<input type="hidden" name="getpage" value="../html/de/menus/menu2.html" id="uiPostGetPage">
<input type="hidden" name="errorpage" value="../html/de/menus/menu2.html" id="uiPostErrPage">
<input type="hidden" name="var:lang" value="de" id="uiPostLang">
<input type="hidden" name="var:pagename" value="home" id="uiPostPageName">
<input type="hidden" name="var:errorpagename" value="" id="uiPostErrorPageName">
<input type="hidden" name="var:menu" value="home" id="uiPostMenu">
<input type="hidden" name="var:pagetitle" value="" id="uiPostPageTitle" disabled>
<input type="hidden" name="var:pagemaster" value="" id="uiPostPageMaster">
<input type="hidden" name="time:settings/time" value="" id="uiPostDateTime">

</form>

</body>
</html>
 
Re

Hi olistudent,
ich komm grad leider nicht ganz mit, "martian" hat mich gebeten was zu bauen das man auf die Fritz!Box zugreifen kann, also ein CGI Skript, und dann dort die MAC des zu weckenden PC´s einträgt und das der dann geweckt wird.
Aber Ihr habt doch schon ein CGI-Skript, wisst wie man den Link vom bestehenden Webserver umbaut das man auch eigene Skripte nutzen kann und habt ein kompiliertes Etherwake. Wo ist dann noch das Problem an der Sache???

MFG

Maruu
 
Re: Re

Maruu schrieb:
Aber Ihr habt doch schon [...]. Wo ist dann noch das Problem an der Sache???

Hi, Maruu. Richtig, die Bausteine sind alle da; die müssen jetzt nur noch zusammengebaut werden:
  • Weblinks umbiegen, um eigene Inhalte auf den Webserver zu bekommen
  • ein HTML-Formular einrichten, bei dem man eine MAC-Adresse (und evtl. weitere Parameter: Interface, Broadcast, Passwort) eintragen oder aus einer Liste auswählen kann (dafür am besten eine Konfigurationsdatei; das Formular könnte auch dynamisch durch das folgende CGI-Skript generiert werden)
  • ein CGI-Skript installieren, dass etherwake mit den übergebenen Parametern aufruft
  • etherwake installieren
Das ganze in der debug.cfg bei jedem Start, damit es auf unveränderten Firmwares läuft. Fertig.
 
Re

Hi!

OK jetzt verstehn*g*

Hab aber noch ne kurze Frage, soll der vorhandene Webserver benutzt werden oder soll evt ein weiterer Webser (z.B. den den ich mal kompiliert hatte) genommen werden der dann auf nem anderen Port läuft.


MFG

Maruu
 
Re

OK dann schau ichd as ich das so mach, nun noch die Frage zu etherwake, hab grad mal das mod 0.57 gezogen da sind einige sachen drin wie dropbear und so aber ich find da kein eatherwake drin, is das in die Busybox eingebaut oder wo liegt das??

MFG

Maruu

PS: Falls es jemand so da hat wärs nett wenn er es kurz irgendwo hochladen könnt oder mir zuschicken könnte.
 
Re: Re

Maruu schrieb:
hab grad mal das mod 0.57 gezogen [...] ich find da kein eatherwake drin, is das in die Busybox eingebaut oder wo liegt das??

Ja, stimmt. Das ist bei mod-0.57 in der Busybox drin.
 
Re

Das ist aber schlecht weil man ja dann die BusyBox austauschen muss oder?
Hab noch kein Plan wie das geht und ob das schwer is?
Wärs dann nicht einfacher das eatherwake nochmals zu kompilieren??

MFG

Maruu
 
Re: Re

Maruu schrieb:
Das ist aber schlecht weil man ja dann die BusyBox austauschen muss oder?
Naja, man ja einfach die zweite Busybox nur für etherwake benutzen, auch wenn das Platzverschwendung ist. Ich glaube, hier wird's auch so gemacht: 21635

Austauschen geht eh nicht, wenn wir die ganze etherwake-per-CGI-Sache auf unveränderten Firmwares laufen lassen wollen.

Wärs dann nicht einfacher das eatherwake nochmals zu kompilieren??
Ich schau mal, ob ich das hinbekomme.
 
Re

Hi!

hat sich erledigt. Den Link den du mir gegeneb hast, dort gibts ein Zip-File, und das ist keien Busy-Box sondern da liegt das eatherwake File kompiliert drin.
Das reicht mir.

Gruß

Maruu
 
Re: Re

Maruu schrieb:
das ist keien Busy-Box sondern da liegt das eatherwake File kompiliert drin.
:) Doch, das ist eine Busybox (heißt nur nicht so ...); aber wie gesagt, für den Anfang reicht das ja. Eine kleineres etherwake können wir uns immer noch beschaffen.
 
*g* ok das wusste ich nicht, naja aber das tuts ja wie Du schon sagtest.

Gruß

Maruu
 
*lol*
jap das is um einiges kleiner.

THX @olistudent

Gruß

Maruu
 
Hi!

Kurze frage, ich bastle grad ein CGI-Skript auf der Fritz!Box und benutze den vi. Kann es sein das der sich seltsam verhält? Ich bekomm im Einfügemodus kein Backspace oder Entfernen mit der Entf Taste hin.
Is ein bissle sch... ohne was löschen zu können*g*

MFG

Maruu
 
Die Backspace-Taste müsste man mit einer geeigneten Einstellung des Terminals via "stty erase ..." zum Laufen bekommen; habe ich aber noch nicht geschafft.

Ansonsten gibt es auch genügend Befehle im Command-Mode des vi, z.B.
Code:
x    Lösche ein Zeichen
5x   Lösche 5 Zeichen
dw   Lösche ein Wort
dd   Lösche eine Zeile
3dd  Lösche 3 Zeilen
d$   Lösche bis zum Ende der Zeile
d^   Lösche bis zum Anfang der Zeile
d%   Lösche bis zur Klammer, die zur der unter dem Cursor passt
 
Hi!

Jup die kenn ich, wollte nur wissen ob ich der einzige bin bei dem es so ist oder ob noch Andere das Problem haben.
So CGI-Skript is eigentlichfast fertig, naja macht mal einen normalen wakup, eine Test-Html seite hab ich auch, das umlenken des Webservers hat ja hier schon jemand gepostet.
OK nun gehts ans pseudoimage. Das ist doch mit tar gepackt oder?
Muss ich da spezielle Einstellungen beachten?

MFG

Maruu
 
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.