<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These InterfaceOptions for customising TiddlyWiki are saved in your browser

Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)

<<option txtUserName>>
<<option chkSaveBackups>> SaveBackups
<<option chkAutoSave>> AutoSave
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
<<option chkAnimate>> EnableAnimations

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
Advanced Packaging Tool (APT), es un sistema de gestión de paquetes creado por el proyecto Debian, simplificando en gran medida la instalación y eliminación de programas en los sistemas GNU/Linux. APT no es un programa, sino una biblioteca de funciones en C++ utilizada por varios programas. En especial: apt-get y apt-cache, aptitude, Synaptic entre otros. Más información en: http://es.wikipedia.org/wiki/Advanced_Packaging_Tool

!1. Escoger repositorios de paquetes de Debian
http://www.debian.org/mirrors/list

Ejemplos:
* http://distro.ibiblio.org/debian/
* http://mirrors.kernel.org/debian
Se recomienda probar estos servidores con los comandos ping y mtr para evaluar latencia y número de saltos.

!2. Editar el archivo de lista de fuentes
{{{
# nano /etc/apt/sources.list
}}}
{{{
deb http://mirrors.kernel.org/debian lenny main contrib non-free
#deb http://distro.ibiblio.org/debian lenny main contrib non-free

deb http://security.debian.org/ lenny/updates main contrib non-free

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
}}}

!3. Actualización de indice local a partir de los repositorios
{{{
# apt-get update
}}}

!4. Actualización de los paquetes instalados
{{{
# apt-get upgrade
}}}

!5. Buscar Paquetes
{{{
# apt-cache search [palabra clave]
}}}

!6. Obtener información de un Paquete
{{{
# apt-get show [nombre del paquete]
}}}

!7. Instalar Paquetes
{{{
# apt-get install [nombre del paquete]
}}}
Esta forma de instalación tiene la ventaja de resolver, descargar e instalar todas las dependencias requeridas.




! iperf
Herramienta para medir el ''ancho de banda de una red'' a través de la generación de trafico entre un servidor y un cliente. Las pruebas se pueden realizar tanto para conexiones TCP como UPD. Se instala con el paquete //iperf// en linux, aunque también se puede instalar el app //iPerf for Android// y se puede descargar el front-end para windows y linux jperf de: http://sourceforge.net/projects/iperf/
Servidor:
{{{
$ iperf -s -i 1
}}}
-s corre como servidor
-D corre como demonio
-i intervalo en el que presenta reportes

Cliente:
{{{
$ iperf -c IP-Servidor -d -t 30 -i 1
}}}
-c corre como cliente y a continuación se coloca la IP del servidor
-d prueba bidireccional
-t tiempo de transmisión
-i intervalo en el que presenta reportes

Más información en:
* http://iperf.sourceforge.net/
* http://seguridadyredes.nireblog.com/post/2008/06/18/iperf-midiendo-ancho-de-banda-entre-dos-hosts

! nethogs
Herramienta para medir el ancho de banda que consume cada ''proceso, aplicación o programa'' en un equipo con GNU/Linux. Se instala con el paquete //nethogs//
{{{
# nethogs eth0
}}}
-eth0 o wlan0 para indicar la interfaz de red.
Cuando se esta ejecutando el programa, se puede cambiar la unidad de medida presionando la tecla //m//.

Más información:
* https://lamiradadelreplicante.com/2013/02/27/supervisar-el-trafico-de-red-de-tus-aplicaciones-con-nethogs/
* https://github.com/raboof/nethogs
! Ofimática
* ''WPS Office + PDF'' (Kingsoft Office Software Corporation). Visualizar, crear y compartir documentos de office. https://play.google.com/store/apps/details?id=cn.wps.moffice_eng
* ''~AndrOpen Office'' (andropenoffice.com). Lector de archivos Open Documet. https://play.google.com/store/apps/details?id=com.andropenoffice
* ''~CamScanner - PDF Creator'' (INTSIG Information). Escanea documentos. https://play.google.com/store/apps/details?id=com.intsig.camscanner
* ''Moon+ Reader'' (Moon+). Lector de archivos ePUB. https://play.google.com/store/apps/details?id=com.flyersoft.moonreader
* Any.Do
* Evernote
* Adobe Acrobat
* Mega
* Dropbox + Dropsyng
* OSM
* Twitter
* Waze

! Utilidades
* ''~AirDroid'' (SAND STUDIO): Administración de las principales funcionalidades del móvil desde el computador a través de una red wifi. https://play.google.com/store/apps/details?id=com.sand.airdroid
* ''~ConnectBot'' (Kenny Root and Jeffrey Sharkey). Cliente para conexión por consola a servidores SSH. https://play.google.com/store/apps/details?id=org.connectbot
* ''Android Mouse and Keyboard'' (Suraj Bhattarai): convierte móvil en mouse y teclado remoto del computador. Requiere aplicación en el computador que funcione en Windows y Linux. https://play.google.com/store/apps/details?id=com.iandrobot.andromouse.lite
* ''ES File Explorer File Manager''. Explorador de archivos y ahora también permite compartir archivos. https://play.google.com/store/apps/details?id=com.estrongs.android.pop
* ''APK Share'' (~NewPower Studios). Compartir una apps instalada https://play.google.com/store/apps/details?id=com.newpower.apkmanager
* ''Shazam'' (Shazam Entertainment). Identificador de música. https://play.google.com/store/apps/details?id=com.shazam.android 

! Administrar archivos desde el computador en el móvil
* ''Share via HTTP - File Transfer'' (Marcos Diez). Facilita la descarga de un archivo, directorio, contacto en el celular a través de un servidor http. https://play.google.com/store/apps/details?id=com.MarcosDiez.shareviahttp
* ''WiFi File Transfer'' (smarterDroid). Subir y descargar archivos del móvil desde la interfaz web de un computador mediante una conexión wireless. https://play.google.com/store/apps/details?id=com.smarterdroid.wififiletransfer&hl=es
* ''Transferencia de archivos WiFi'' (androidder).  Gestionar los archivos del móvil desde el ordenador a través de conexión inalámbrica. https://play.google.com/store/apps/details?id=com.mbapp.ftpserver

! Contenidos Educativos
Aplicaciones educativas Preescolar
* ''Animal Piano'' (Gamekozo). Piano con sonidos de animales. https://play.google.com/store/apps/details?id=net.gamekozo.animalpiano
* ''Animal Piano Pianimal'' (Daniel Mena Calavia). Piano con sonidos de animales y colores. https://play.google.com/store/apps/details?id=dmena.pianimal
Juegos Educativos
* ''Angry Birds'' (Rovio Mobile Ltd.). Concepto de movimiento parabólico. https://play.google.com/store/apps/details?id=com.rovio.angrybirds
Apoyo musical
* ''Analog Metronome'' (Liner App). Metronomo. https://play.google.com/store/apps/details?id=com.panusmos.metronome

! Programación con niños
* ''~ScratchJr'' (Scratch Foundation): https://play.google.com/store/apps/details?id=org.scratchjr.android
* ''Pocket Code'' (Catrobat): https://play.google.com/store/apps/details?id=org.catrobat.catroid
* ''Lightbot Jr'': Coding Puzzles (Lightbot): https://play.google.com/store/apps/details?id=com.lightbot.lightbotjr
* ''Tynker'' - Learn to code (Tynker): https://play.google.com/store/apps/details?id=com.tynker.Tynker
* ''codeSpark'' Academia (codeSpark): https://play.google.com/store/apps/details?id=org.codespark.thefoos
* ''Bit by Bit'' - Programming Game (Rikai Games): https://play.google.com/store/apps/details?id=com.rikaiGames.BitByBitGame
* ''Kodable'' (Kodable): https://play.google.com/store/apps/details?id=com.surfscore.kodable.main.android

! Servidores
* ''~SSHDroid'' (Berserker). Servidor SSH para Android. https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid
* ''kWS - Android Web Server'' (Kamran Zafar). Servidor Web. https://play.google.com/store/apps/details?id=org.xeustechnologies.android.kws
* ''Servidor FTP'' (The Olive Tree). Servidor FTP. https://play.google.com/store/apps/details?id=com.theolivetree.ftpserver
* ''Palapa Web Server'' (~AlfanLA). Servidor Web, ~MySQL y PHP. https://play.google.com/store/apps/details?id=com.alfanla.android.pws    

! Administración de Redes
* ''Network Tools'' (Vladimir Kuts). Monitorea servidores a través de diferentes métodos: ping, http, etc. https://play.google.com/store/apps/details?id=ua.cv.westward.networktools
* ''Ping & DNS'' (Ulf Dittmer). Herramientas de diagnostico: Ping, Traceroute, etc. https://play.google.com/store/apps/details?id=com.ulfdittmer.android.ping 
* ''Fing - Network Tools'' (Overlook). Descubre y analiza los equipos conectados a una red ~Wi-Fi. https://play.google.com/store/apps/details?id=com.overlook.android.fing
* ''Wifi Analyzer'' (farproc). Muestra las señales ~Wi-Fi cercanas, sus canales, tipo de cifrado y potencia. https://play.google.com/store/apps/details?id=com.farproc.wifi.analyzer 
* ''Speedtest.net'' (Ookla). Muestra el ancho de banda de subida y de bajada en redes Celulares y ~Wi-Fi. https://play.google.com/store/apps/details?id=org.zwanoo.android.speedtest
* ''iPerf for Android'' (~MagicAndroidApps.com). Herramienta para determinar el ancho de banda de una conexión. https://play.google.com/store/apps/details?id=com.magicandroidapps.iperf  

! Religión
* ''iBreviary'' (Paolo Padrini). Liturgia de las horas. https://play.google.com/store/apps/details?id=com.netguru.ibreviary
* ''~MySword Bible'' (~RiverSoft Ministry). Lector de archivos de biblias. https://play.google.com/store/apps/details?id=com.riversoft.android.mysword 
* ~ePrex

! Restauración
* SMS Backup & Restore (Ritesh Sahu): https://play.google.com/store/apps/details?id=com.riteshsahu.SMSBackupRestore
* Call Logs Backup & Restore (Ritesh Sahu): https://play.google.com/store/apps/details?id=com.riteshsahu.CallLogBackupRestore
* SMS & Call Log Backup (Relay Software)

! Artículos
* http://www.enter.co/#!/chips-bits/apps-software/bebe-en-camino-cinco-aplicaciones-para-futuros-papas/


La siguiente guía permite evitar la contraseña de ~NetworkManager para conectarse a redes inalámbricas. Estos pasos se probaron en un computador con Ubuntu 7.04

1. Descargar e instalar el archivo pam-keyring_0.0.8-1_i386.deb de http://ubuntuforums.org/showthread.php?t=305278

2. Crear un script (puede ser en /usr/local/bin/) con el siguiente contenido:
{{{
#!/bin/bash
echo mypassword | /usr/libexec/pam-keyring-tool -u -s
}}}

3. Cambiar usuario y permisos para que nadie diferente al usuario de la sesión en el computador, puedo ver y ejecutar el archivo (exepto si tiene privilegios de root):
{{{
# chmod usuario /myruta/myscript
# chmod 500 /myruta/myscript
}}}

3. Configurar el inicio de sesión para que se cargue el script automáticamente:
* Sistema -> Preferencias -> Sesion
* Pestaña: Progranas de Inicio
* Addionar el Script y darle un nombre
 
4. Reiniciar la sesión y probar!

Nota 1: este procedimiento se debe realizar para cada usuario en el computador, lo que significa que debe crearse un script diferente en cada caso.

Nota 2: Otra forma para evitar este tipo de contraseña, es utilizar wifi-radar o wicd como gestor de redes, pero en el computador de prueba no funcionaron.

Referencias
* http://ubuntuforums.org/showthread.php?t=305278
* http://helektron.com/2007/03/05/como-instalar-y-quitar-la-contrasena-a-networkmanager-en-ubuntu/
Apache es un servidor HTTP de código abierto multiplataforma que apareció desde los inicios de la web. Documentación oficial en: http://httpd.apache.org/docs/2.2/es/

!1. Instalación del servicio
{{{
# apt-get install apache2
}}}
Debian Lenny ya no soporta Apache 1.3
Probar http://polux.unicauca.edu.co

Para enviar la menor información posible sobre el servidor a los clientes, cambiar a los siguientes valores en /etc/apache2/conf.d/security:
{{{
ServerTokens Prod  (información sobre el servidor en la cabecera de los paquetes)
ServerSignature Off  (información sobre el servidor en páginas autogeneradas)
TraceEnable Off  (información para depurar datos de los usuarios)
}}}
Después de cada cambio se debe reiniciar el servidor:
{{{
# /etc/init.d/apache2 restart
}}}

!2. Soporte para web seguro

!!2.1 Configuración de Apache por defecto
Se habilita el modulo ssl, el host virtual con el certificado digital por defecto que viene con la instalación de apache y se reinicia el servicio:
{{{
# a2enmod ssl
# a2ensite default-ssl
# /etc/init.d/apache2 restart
}}}
Probar https://polux.unicauca.edu.co

Cada host virtual en Apache tiene por defecto un archivo de registros (log) diferente. Si se requiere que los registros del host virtual seguro como no-seguro estén en el mismo archivo, se debe cambiar en el archivo /etc/apache2/sites-available/default-ssl, el parámetro:
{{{
CustomLog /var/log/apache2/access.log
}}}

!!2.2 Creación de un certificado de seguridad autofirmado
El uso de este tipo de certificados permite la encriptación de la información en las conexiones web entre clientes y servidor, pero no permite asegura la identidad del servidor. Esto sólo se puede hacer a través de la firma que haga una Autoridad Certificadora legalmente reconocida.

Para crear un certificado autofirmado se debe verificar la existencia de los siguientes paquetes:
{{{
$ dpkg -l |grep openssl
$ dpkg -l |grep ssl-cert
}}}

La creación del certificado se realiza con el siguiente comando:
{{{
# openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/polux.crt -keyout /etc/apache2/polux.pem
}}}
Donde:
-days: indica el número de días de vigencia del certificado
-out: archivo donde se guarda el certificado se seguridad
-keyout: archivo donde se guarda la llave privada

Los datos a diligenciar son:
{{{
Country Name (2 letter code) [AU]:CO
State or Province Name (full name) [Some-State]:Cauca
Locality Name (eg, city) []:Popayan
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Universidad del Cauca
Organizational Unit Name (eg, section) []:Red de Investigacion Educativa - ieRed
Common Name (eg, YOUR name) []:polux.unicauca.edu.co (nombre de dominio del sitio web para el que se crea el certificado)
Email Address []:doctorado@polux.unicauca.edu.co
}}}
No se recomienda utilizar tildes, ni ñ para evitar problemas de visualización.

Para mayor seguridad, se debe cambiar los permisos de lectura y escritura del certificado de seguridad y de la llave privada:
{{{
chmod 500 /etc/apache2/polux.*
}}}

El uso de los archivos generados, dentro de la configuración del Virtual Host, es como sigue:
{{{
        SSLEngine on
        SSLCertificateFile    /etc/apache2/polux.crt
        SSLCertificateKeyFile /etc/apache2/polux.pem
}}}

También se puede crear una Autoridad Certificadora (CA) propia, para firmar certificados de seguridad (diferentes sitios web, correo electrónico, etc.), pero mantiene el problema de no poder asegurar la identidad del servidor, y por tanto no tiene valor legal. Más información en:
* http://www.linuxtotal.com.mx/index.php?cont=info_seyre_001
* http://informatica.uv.es/it3guia/AGR/apuntes/teoria/documentos/Certificados.pdf
* http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html
* http://tldp.org/HOWTO/Apache-WebDAV-LDAP-HOWTO/ssl.html
Más información sobre ~OpenSSL:
* http://www.openssl.org/docs/

!3. Redireccionamiento
Habilitar el modulo rewrite y reiniciar el servicio:
{{{
# a2enmod rewrite
}}}
En el archivo de configuración de cada host virtual donde se requiera el redireccionamiento se debe agregar la línea:
{{{
RewriteEngine on
}}}
Ahora si se puede utilizar las reglas de redireccionamiento. Más información en: http://httpd.apache.org/docs/2.2/rewrite/

!4. Directorios con contraseña
Lo primero es que en la definición más general del directorio, dentro del archivo de configuración del host virtual este los siguiente:
{{{
AllowOverride AuthConfig 
}}}
Luego se debe crear un archivo con el usuario y la contraseña:
{{{
# htpasswd -c /etc/apache2/passwd root
}}}
-c: para crear el archivo, si ya existe no se debe colocar porque borra el contenido
/etc/apache2/passwd: ruta y archivo, no debe ser accesible desde la web
root: es el usuario

Se crea el archivo .htaccess en el directorio que se quiere proteger, con los siguientes parámetros:
{{{
AuthType Basic
AuthName "Directorio Restringido"
AuthUserFile /etc/apache2/passwd
Require user root
}}}
Se establece los permisos adecuados por cuestiones de seguridad:
{{{
chown www-data:www-data /etc/apache2/passwd
chmod 600 /etc/apache2/passwd
chmod 755 .htaccess
}}}
Más información en:
* http://httpd.apache.org/docs/2.2/howto/auth.html

!5. CGI: Common Gateway Interface
La interfaz de entrada común (CGI) es un estándar que permite la solicitud de datos de un programa ejecutado en un servidor web. Esta funcionalidad viene habilitada en apache2 por defecto, sin embargo se sugiere dos cosas:
* Para cada aplicación web que requiera la ejecución scripts, definir un directorio especifico con permisos especiales. Ejemplo:
{{{
        Alias /irc /usr/lib/cgi-bin/cgiirc
        <Directory /usr/lib/cgi-bin/cgiirc>
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                AddHandler cgi-script .cgi
                Order allow,deny
                Allow from all
                <IfModule mod_dir.c>
                  DirectoryIndex irc.cgi
                </IfModule>
        </Directory>
}}}
* Si de todas formas se requiere un directorio general, se debe cambiar la ruta por defecto para minimizar ataques. Para ello se debe ingresar al archivo default y default-ssl y cambiar /cgi-bin/ por /cgi/.
{{{
        ScriptAlias /cgi/ /usr/lib/cgi-bin/
}}}
Para probar el funcionamiento de Perl se puede crear un archivo llamado test.pl en /usr/lib/cgi-bin con el texto:
{{{
#!/usr/bin/perl
print "Content-type: text/html\r\n\r\n";
print "Hola CGI";
}}}
Cambiamos permisos y lo ejecutamos:
{{{
# chmod 755 test.pl
# ./test.pl
}}}
Probamos nuestro archivo accediendo a través de un navegador: http://polux.unicauca.edu.co/cgi/test.pl. Después de comprobar su funcionamiento se debe borrar el archivo.

!6. Directorio de iconos
Apache tiene un directorio de iconos en /usr/share/apache2/icons/ que es accesible a través de la URL http://polux.unicauca.edu.co, sin embargo, la configuración no permite adicionar enlaces simbólicos a otros directorios o imágenes de otras aplicaciones web. Para habilitar esto, se debe agregar la opción ~FollowSymLinks al parámetro Options en el archivo /etc/apache2/mods-enabled/alias.conf
{{{
Alias /icons/ "/usr/share/apache2/icons/"
<Directory "/usr/share/apache2/icons">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
}}}

!7. Acceso a información del servicio
Apache puede suministrar información sobre el funcionamiento del servicio, que puede ser utilizado por otras aplicaciones para realizar monitoreo y generar estadísticas, pero si no se resguarda adecuadamente, puede ser utilizada para atacar el servidor. Por esta razón es conveniente restringir su acceso sólo a los procesos locales. Los módulos se cargan de la siguiente manera:
{{{
# a2enmod info
# a2enmod status
}}}
Luego se deben modificar los siguientes archivos para restringir su acceso:
* /etc/apache2/mods-available/info.conf
{{{
<Location /server-info>
    SetHandler server-info
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>
}}}
* /etc/apache2/mods-available/status.conf
{{{
ExtendedStatus On

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>
}}}
La opción ~ExtendedStatus es opcional, pero se recomienda para tener acceso a información más detallada sobre el funcionamiento de apache.

Se reinicia el servicio de apache y se prueba el acceso a esta información por consola:
{{{
$ links2 http://localhost/server-status
$ links2 http://localhost/server-info
}}}

!8. Acceso a Documentación
Aunque el acceso a la documentación sólo esta permitido desde el localhost, esto no es práctico para un servidor, por lo que resulta mejor borrar la definición de este directorio de los host virtuales.

!9. Monitor del estado de apache en tiempo real.
{{{
# apt-get install apachetop (instalar la primera vez)
}}}
Esta utilidad requiere que se especifique el o los archivos de registro de apache sobre los cuales va a realizar el monitoreo. Para cada archivo se debe anteponer la opción -f
{{{
# apachetop -f /var/log/apache2/access.log
}}}

!10. Información del Sistema con phpSysInfo
Se instala con:
{{{
# apt-get install phpsysinfo
}}}
Esta instalación genera un enlace simbólico en /var/www que permite la visualización de la información a través de la dirección web: http://polux.unicauca.edu.co/phpsysinfo
Sin embargo, por cuestiones de seguridad, es conveniente que este enlace simbólico este dentro de un directorio de apache, protegido con contraseña y accesible únicamente a través de https.

!11. Navegadores por línea de comando
{{{
# apt-get install lynx w3m links2
}}}
* __lynx__: navegador rápido
* __w3m__: respeta los estándares y maneja frames
* __links2__: surgió para mejorar lynx, maneja frames y carga imágenes

!12 Resolución de problemas
Para tener varios Virtual Host con SSL, se debe revisar que en el archivo {{{/etc/apache2/ports.conf}}} se encuentre el siguiente parámetro:
{{{
NameVirtualHost *:443
}}}

!12. Resolución de Problemas

!!! Cambio de directorio raíz no funciona
Esto se debe a que a partir de Ubuntu 14.04, no se permite por defecto, el uso de un directorio diferente al {{{/var/www/html}}}. Para cambiar este comportamiento, se debe borrar la configuración de directorios en {{{/etc/apache2/apache2.conf}}} y colocar esta configuración con el directorio que se requiere en {{{/etc/apache2/sites-available/000-default.conf}}}.

Además se debe tener en cuenta que: 1) Los permisos del directorio raíz de Apache debe ser 755 y 2) Los permisos de las carpetas superiores al directorio raíz de Apache debe ser como mínimo 711.
! NETWORKS
[C:\Windows] Este archivo contiene mapeo de nombre de red/número de red para redes locales. Los números de red se reconocen por el formatodecimal con puntos.

! PROTOCOL
[C:\Windows] Este archivo contiene los protocolos Internet tal y como están definidos por RFC 1060 (Números asignados). 

! SERVICES 
[C:\Windows] Este archivo contiene números de puerto para los servicios más conocidos tal y como están definidos po RFC 1060 (Assigned Numbers). 

! HOSTS.SAM
[C:\Windows] This is a sample HOSTS file used by Microsoft TCP/IP stack for Windows98 This file contains the mappings of IP addresses to host names. Each entry should be kept on an individual line. The IP address should be placed in the first column followed by the corresponding host name. The IP address and the host name should be separated by at least one space.


! LMHOSTS.SAM
[C:\Windows] This is a sample LMHOSTS file used by the Microsoft Wins Client (~NetBios over TCP/IP) stack for Windows98 This file contains the mappings of IP addresses to NT computernames (~NetBIOS) names.  Each entry should be kept on an individual line. The IP address should be placed in the first column followed by the corresponding computername. The address and the comptername should be separated by at least one space or tab. The "#" character is generally used to denote the start of a comment (see the exceptions below).

! CONFIG.TXT
[C:\Windows] Archivo LÉAME de comandos Config.sys de ~MS-DOS

! LOGO.SYS
[C:\] Imagen Inicio de Microsoft Windows

! LOGOW.SYS
[C:\Windows] Imagen Windows se esta cerrando.

! LOGOS.SYS
[C:\Windows] Imagen Ahora puede apagar el equipo.

! WVLEFT
[C:\Windows\web] Imagen para vista de directorio tipo web.

! WVLOGO
[C:\Windows\web] Imagen para vista de directorio Windows cuando es de tipo Web.

! Modificadores del Explorador de Windows
Los modificadores del Explorador de Windows son útiles para crear carpetas raíz:
{{{
Explorer [/e,][/root,<objeto>,] [[<carpeta>]| [/select, <sub objeto>]]
}}}
/e		   Utiliza la presentación Explorador (alcance y panel de resultados). El predeterminado es presentación Abierta (sólo panel de presentación).
/root<objeto>  Especifique el objeto con el espaciado de nombre "normal" usado como raíz (nivel superior) para el Explorador de Windows. El predeterminado es la carpeta Escritorio.
/select	   Abre la carpeta de origen y selecciona el objeto especificado.
<sub objeto>   La carpeta o archivo que abre el Explorador de Windows. Si se utiliza el modificador /select, el sub objeto se resalta. Si no se utiliza el modificador /select, la carpeta o archivo se abre en el Explorador. El predeterminado es la raíz.

Ejemplos:
{{{
Explorer /e, /root, \\Informes
}}}
Abre una ventana del Explorador en \\Informes.
{{{
Explorer /select, C:\Windows\Calc.exe
}}}
Abre una carpeta en C:\Windows (o activa la que está actualmente abierta), y selecciona Calc.exe.
{{{
Explorer /e, /root, 
		\Source\Internal\Design\Users\David\Archive
}}}
Abre una carpeta en la carpeta Archive. Es un buen método para crear una carpeta dedicada remota de archivo de documentos. Puede colocarse un enlace a esta carpeta (\\Source\Internal\Design\ Users\David\Archive) en la carpeta ~SendTo para encaminar los documentos rápidamente.




! Exportar a mp3
# Instalar el paquete liblame
# Abrir Audacity > Menu Editar > Preferencias > Pestaña Formato de Archivos > Botón Buscar Libreria
# En /usr/lib buscar y escoger el archivo libmp3lame.so. Se da aceptar en los dos cuadros de dialogo abiertos.
# Listo! Exportar a Mp3
! Copias de Seguridad con Dump
Herramienta para hacer copias de seguridad de sistemas de archivos en sistemas tipo Unix.

Instalación:
{{{ 

# apt-get install dump

}}}

Restauración:
{{{
restore -if ...2003-04-24- -aM

restore> add <archivo>
restore> extract

Nota: si pide volumen dar: 1

set owner/mode for '.'? [yn] y
}}}

Más información en:
* http://www.ibiblio.org/pub/linux/docs/LuCaS/Manuales-LuCAS/doc-unixsec/unixsec-html/node104.html
Bibus es un programa administrador de referencias y citas bibliográficas. La gran diferencia con otros programas como ~EndNote es que funciona con ~OpenOffice en GNU/Linux y con ~OpenOffice y Word en Windows. Más información en: http://bibus-biblio.sourceforge.net

! Instalación de Bibus en un Ubuntu 7.04

1. Ingresar la siguiente linea en el /etc/apt/source.list
{{{
deb http://switch.dl.sourceforge.net/sourceforge/bibus-biblio ./
}}}

2. Configurar la llave de seguridad publica:
{{{
# wget -q http://switch.dl.sourceforge.net/sourceforge/bibus-biblio/pmartino.gpgkey -O- | sudo apt-key add -
}}}

3. Instalar los paquetes complementarios de Bibus:
{{{
# apt-get update
# apt-get install libsqliteodbc python-pysqlite2 python-wxgtk2.6 python-uno 
}}}

Nota: Bibus 1.4.3 (2008-05-20) requiere el paquete python-central >= 0.6.5. Sin embargo, Ubuntu 7.04 viene con el paqute python-central 0.5.12. Por lo tanto, se requiere descargar una versión anterior de Bibus e instalarla manualmente. Si en una versión posterior de Ubuntu se cuenta con python-central 0.6.5 se puede instalar bibus con apt-get.

4. Descargar e instalar Bibus 1.4.2 (2008-03-15):
http://sourceforge.net/project/showfiles.php?group_id=110943&package_id=151072
{{{
# dpkg -i bibus_1.4.2-1_all.deb
}}}
Más información en: http://bibus-biblio.sourceforge.net/wiki/index.php/Installation#Ubuntu

! Configuración Inicial de Bibus con ~OpenOffice2 en Ubuntu 7.04

1. Asegurarse que el "Nivel de Seguridad" de los Macros de ~OpenOffice este en "Medio" (Recomendado) o "Bajo" (No recomendado). 

Para esto abrir cualquier aplicación de ~OpenOffice y: entrar al menu Herramientas > opción Propiedades > opción Seguridad > Botón Seguridad de macros > Pestaña Nivel de seguridad. Escoger el nivel de seguridad, Aceptar y luego cerrar todas las aplicaciones que se tengan de ~OpenOffice.

2. Abrir por primera vez la aplicación Bibus, a través del sistema operativo, para ello: entrar al Menú Aplicaciones > opción Oficina > programa Bibus

3. Seleccione el procesador de palabras con el que va a trabajar. En Ubuntu, sólo se puede escoger ~OpenOffice. Luego hacer clic sobre el botón "Next".

4. Para que Bibus pueda ingresar las citas en ~OpenOffice se requiere hacer clic en el botón "Activate", en el nuevo cuadro de dialogo Habilitar los Macros (clic en el botón Enable Macros), y en el documento que se habre hacer clic sobre el botón "Accept Uno Connection" y luego cerrar ~OpenOffice. Luego hacer clic sobre el botón "Next".

5. Seleccionar la base de datos que se va a utilizar. Si es para uso personal, se recomienda escoger ~SQLite. ~MySQL se utiliza cuando se quiere centralizar la base de datos de Bibus en una red de equipos. Luego hacer clic sobre el botón "Next".

6. La creación de la base de datos requiere de: un lugar (ruta) y un nombre de archivo, y un nombre de usuario. Luego hacer clic sobre el botón "Finish".

Más información en: http://bibus-biblio.sourceforge.net/wiki/index.php/First_connection_wizard

! Primeros pasos en Bibus
Consultar: http://bibus-biblio.sourceforge.net/wiki/index.php/First_steps




! shred
Borrar Archivo de forma segura:
{{{
$ shred -u archivo.ext
}}}

Borrar Directorio de forma segura:
{{{
$ shred /directorio/subdirectorio
}}}

Borrar Partición de forma segura:
{{{
# shred -vzn 1 /dev/sdb1 
}}}

-f  Cambia permisos para sobreescribir
-n  Número de veces que sobreescribe
-u  Elimina el archivo después de sobreescribirlo
-v  Muestra el progreso de borrado en la pantalla
-z  Borra los 0 del proceso de borrado para no dejar rastro.

!Bleachbit
Usa {{shred}} pero a través de interfaz gráfica.
Borra todos los archivos (en una estructura de directorios) que cumplan con el patrón
{{{
find . -name "*~*" -exec rm '{}' \;
}}}
Comando que indica el tipo de archivo
{{{
$ file (nombre del archivo)
}}}

Opción 1:
{{{
$ mkisofs -J -r -b diskdos2.img -o cddos.iso -input-charset iso8859-1 cd-dos-arranque/
}}}
* diskdos2.img: imagen de un diskette con archivos de inicio (debe estar en el directorio archivos a quemar)
* cddos.iso: nombre del archivo de imagen de cd
* archivos-a-quemar/: directorio donde están los archivos adicionales que van en el cd

$ mkisofs -pad -b diskdos2.img -R -o cddos2.iso diskdos2.img
$ umount /dev/cdrom
$ cdrecord dev=/dev/cdrw speed=12 blank=fast -pad -v -eject cddos2.iso

Referencias:
* http://www.tldp.org/HOWTO/Bootdisk-HOWTO/cd-roms.html
* http://www.troubleshooters.com/linux/floppy_image_on_cd.htm
* http://linux.org.ar/pipermail/lugar-gral/2005-July/028533.html
Calidad de audio en algunos sistemas de audio[1]:

Teléfono:    11.025 hz       1 ch   8 bits
Radio FM:  22.050 hz  1 o 2 ch   8 bits ***
CD Audio:  44.100 hz        2 ch  16 bits ***
Estudio:     48.000 hz        2 ch  16 bits

Para archivos que contengan sólo voz humana basta con una frecuencia de 22.050, un canal y 16 bits. Audacity no codifica a 8 bits.

Referencias:
* [1] http://mosaic.uoc.edu/pdf/Captura_y_Edicion_de_Audio_con_Herramientas_Libres_II.pdf
* http://5lineas.com/files/curso/cfie-valladolid/curso-web20-manual-audacity.pdf
* http://usuarios.lycos.es/jfmateos2/apuntes/audio/Audacity.pdf




! tcpdump
Más información en:
* http://www.tcpdump.org/
* http://es.wikipedia.org/wiki/Tcpdump

! ~EtherApe
Aplicación que muestra gráficamente y en tiempo real la actividad de nuestra red. Se instala con el paquete {{{etherape}}}.

Cada nodo corresponde a un servidor con el que establecemos comunicación, se usan diferentes colores para representar cada uno de los protocolos (https, www, smb) y el grosor de la línea indica el ancho de banda que esta consumiendo en ese momento. Al clic sobre el nombre del nodo / servidor obtenemos información adicional como pueden ser estadísticas del tráfico.

Más información en:
* https://juncotic.com/etherape-monitoreando-el-trafico-de-red/

''mkfs'': crea un sistema de archivos Linux en una partición, si no se especifica crea un tipo de sistema toma por defecto ext2.
{{{
# mkfs -t ext3 -c /dev/hda6
}}}
''fsck'': Chequea y repara una partición Linux, debe estar desmontada.
{{{
# fsck.ext4 /dev/sda7
}}}
''tune2fs'': cambia los parámetros de chequeo automático de una partición
El siguiente comando muestra cuantas veces ha sido montado y cada cuanto se chequea la partición.
{{{
# tune2fs -l /dev/sda5 | grep -i "mount count"
}}}
En el siguiente ejemplo se establece que la partición se revise cada que se monte 50 veces o cada mes.
{{{
tune2fs -c 50 -i 1m /dev/sda6
}}}




Para la instalación de los fondos de pantalla de Chromecast, existen dos alternativas
# Utilizar el script que aparece en: http://www.atareao.es/ubuntu/todos-los-fondos-de-pantalla-de-chromecast-en-ubuntu/
# Descargar las imágenes y copiarlas en {{{/usr/share/backgrounds/}}} u otro directorio. Estas imágenes se encuentran en:
## http://chromecastbg.alexmeub.com 
## https://github.com/dconnolly/Chromecast-Backgrounds
~ClamAV 0.94.2 (www.clamav.net) es un paquete antivirus Open Source para UNIX y Linux.
Clamav cuenta con las siguientes herramientas:
**  Scanner de antivirus: clamscan y clamdscan
** Demonio/servicio: clamd
** Archivos, herramientas y actualizador: daily.cvd y main.cvd, sig-tool, y freshclam, respectivamente.
** Librería en C: libclamav

!1. Instalación
{{{
 # apt-get install clamav-daemon clamav-freshclam exim4-daemon-heavy
}}}

!2. Configuración
* Agregar clamav a grupo Debian-exim
{{{
 # adduser clamav Debian-exim
}}}
En el archivo ''/etc/group'' debe estar: Debian-exim:x:102:clamav
* En ''/etc/exim4/conf.d/acl/40_exim4-config_check_data'' delante del último ''accept'':
{{{
# Reject messages that have serious MIME errors.
   # This calls the demime condition again, but it
   # will return cached results.
   deny message = Serious MIME defect detected ($demime_reason)
   demime = *
   condition = ${if >{$demime_errorlevel}{2}{1}{0}}

   # Reject file extensions used by worms.
   # Note that the extension list may be incomplete.

   deny message = This domain has a policy of not accepting certain \
                  types of attachments in mail as they may contain a \
                  virus. This mail has a file with a .$found_extension \
                  attachment and is not accepted. If you have a \
                  legitimate need to send this particular attachment, \
                  send it in a compressed archive, and it will then be \
                  forwarded to the recipient.
   demime = exe:com:vbs:bat:pif:scr

   # Reject messages containing malware.
   deny message = This message contains a virus ($malware_name) and \ 
                  has been rejected.
   malware = *
}}}
* Al inicio de ''/etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs'' poner:
{{{
 av_scanner = clamd:/var/run/clamav/clamd.ctl
}}}
Crea el directorio ''/var/spool/exim4/scan'' con permisos de escritura:
{{{
# mkdir -p -m 770 /var/spool/exim4/scan
# chown Debian-exim.Debian-exim scan/
}}}
* Por último, actualizar la configuración de exim, reiniciar exim y reiniciar clamav-daemon:
{{{
 # update-exim4.conf
 # /etc/init.d/exim4 restart
 # /etc/init.d/clamav-daemon restart
}}}
!3. Test
* Descargar el archivo de prueba, es un virus DOS inofensivo:
  http://www.eicar.org/download/eicar.com.txt
* Probar que es un virus:
{{{
$ clamscan eicar.com.txt
}}}
* Enviarlo como attachment en un mail local:
{{{
$ exim4 -C eicar.com.txt -d -bt user@example.com
}}}

!4. Problemas y soluciones
* Si al reiniciar el servicio de exim4 (/etc/init.d/exim4 restart) se presenta el el siguiente error:
{{{
 main option "av_scanner" unknown
}}}
instalar el paquete ''exim4-daemon-heavy'' ya que por defecto instala ''exim4-daemon-light''
* Si al reiniciar el servicio de ''exim4'', sale este mensaje:
{{{
ALERT: exim paniclog /var/log/exim4/paniclog has non-zero size, mail system possibly broken failed!
}}}
Cada vez que reinicie ''exim4'' y el ''paniclog'' no este vacio en Debian / Ubuntu, simplemente:
{{{
rm /var/log/exim4/paniclog
}}}

''Nota:'' depués de cada cambio en los archivos de exim4, ejecutar ''update-exim4.conf'' para que tome las actualizaciones.

!Actualizaciones
* ~ClamAV viene junto a ''freshclam'', una herramienta que periódicamente busca nuevas versiones de bases de datos y mantiene tu base de datos actualizada.
* En el archivo ''/etc/clamav/freshclam.conf'' esta la frecuencia de actualización. Se recomineda colocar dos para que haga la verificación este número de veces al día:
{{{
 # Check for new database 24 times a day
 Checks 2
}}}
Para más acerca de ''freshclam'' visitar [[FAQ Oficial de clamav |http://www.clamav.net/support/faq/lang-pref/es/]].

!5. Enlaces
* [[Configuración del servidor de correo en Debian |http://ftp.cl.debian.org/man-es/exim.html#Clam%20Anti-virus]]
* [[Rejecting viral email at SMTP time with exim4 |http://www.debian-administration.org/articles/141]]
* [[Antivirus and Antispam setup with Exim4 | http://www.debian-administration.org/articles/511]]
Para realizar descargas de archivos en background que se distribuyen en Internet a través del método torrent, se debe utilizar un cliente de descargas que trabaje por consola. Dos de ellos son {{{aria2c}}} y {{{bittorrent}}}.

En primer lugar se deben instalar estos paquetes en el computador con GNU/Linux. En Debian y sus derivados, por ejemplo es a través de {{{apt-get}}}.

! aria2c
Forma de descarga normal por consola:
{{{
$ aria2c -T archivo.torrent
}}}

Método 1 para descarga en background, con lo cual se puede cerrar la sesión y la descarga continuara realizándose:
{{{
$ aria2c -l archivo.log -D -T archivo.torrent
}}}

Método 2 para descarga en background:
{{{
$ nohup aria2c -T archivo.torrent > archivo.log &
}}}

Más información en:
* http://aria2.sourceforge.net
* http://en.wikipedia.org/wiki/Nohup

! bittorrent
Forma de descarga normal por consola:
{{{
$ btdownloadcurses archivos.torrent
}}}

Para descarga en background:
{{{
$ nohup btdownloadheadless archivos.torrent > archivo.log &
}}}

Los métodos de descargar de archivos a través de torrent en background, son muy útiles para realizarlos desde servidores.

Más información en:
* http://bulma.net/body.phtml?nIdNoticia=1849
* http://forums.fedoraforum.org/archive/index.php/t-39619.html

~CmapTools es una aplicación gratuita y multiplataforma creada por el Institute for Human and Machine Cognition (IHMC) para realizar Mapas Conceptuales (Cmaps) que representan modelos de conocimiento. Cuando esta aplicación cliente interactúa con el ~CmapServer, permite a los usuarios en cualquier parte del mundo a través de Internet, compartir, navegar, hacer comentarios y colaborar en la construcción de Cmaps.

El ~CmapServer actúa como un repositorio compartido y un índice de búsqueda de los Cmaps, permite la colaboración asincrónica a través de hilos de discusión y la colaboración síncrona durante la edición de los Cmaps a través de un chat en la aplicación cliente, además permite ver una versión de estos Mapas Conceptuales como página Web

! Requisitos para GNU/Linux
* PC con 500 ~MHz o una velocidad superior de procesador.
* 256 megabytes (MB) de RAM o superior (recomendado).
* Requisitos de espacio en disco: 200 MB de espacio disponible en disco duro.
* Super VGA (800 x 600) o adaptador de vídeo de mayor resolución y monitor.
* Linux kernel 2.4.x o superior
* Librerías libc 2.2.x.

! Recomendaciones
# Es recomendable la instalación de un solo ~CmapServer por máquina.
# El computador donde se instalará ~CmapServer debe tener una dirección IP fija. ~CmapServer puede no funcionar correctamente en una máquina que esté configurado para utilizar DHCP.
#  La máquina debe ser registrada en un DNS. Si la máquina no está registrada en un DNS, el acceso a la ~CmapServer desde ~CmapTools puede ser extremadamente lento.
# El ~CmapServer tiene un servidor web incorporado que permite el acceso a los mapas conceptuales en versión HTML. Este servidor web se ejecuta en el puerto 80 por defecto y, por lo tanto, ~CmapServer debe ser instalado como root. Si usted no tiene permisos como root o existe otro servidor web (es decir, Apache, IIS u otro) corriendo en este puerto, se debe cambiar el puerto del servidor web a alguno mayor que 1024. Se sugiere utilizar el puerto 8001 o 8080.
# Si la máquina donde está instalado ~CmapServer tiene múltiples interfaces de red, usted puede seleccionar la dirección IP y el nombre de host que desea que ~CmapServer use al inscribirse en el Directorio de Lugares (un servicio en Internet del IHMC), y colocarlo en el archivo Install~CmapServer.properties antes de realizar la instalación, o en el archivo serverconfig.txt si ya la ha hecho. Las variables que editar son: server.ip.address y server.hostname.
# Si se tiene un firewall, entonces se deben abrir algunos puertos con el fin de permitir que ~CmapServer se comuniquen con los clientes (~CmapTools) y otros servidores. Los puertos que se deben abrir son: 4447 (TCP), 4747 (TCP / UDP) y el puerto del servidor web (es decir, 80, 8001 o el que se haya utilizado).
# ~CmapServer corre como un proceso. Se separa de la terminal y no tiene una ventana visible. Si quiere saber si está corriendo ~CmapServer debe verificar si existe en la máquina un proceso llamado ~CmapServer o probar la conexión desde un cliente ~CmapTools.
# A la versión web de ~CmapServer se puede acceder desde cualquier navegador web con la siguiente sintaxis http://hostname:port_number/. El nombre de host puede ser también la dirección IP del servidor, y el número de puerto es el que se seleccionó (es decir, 80, 8001, 8080 u otro). Si el servidor Web se está ejecutando en el puerto 80 no es necesario incluirlo en la URL.
# Con esta versión de ~CmapServer, se debe utilizar una versión de ~CmapTools superior o igual a la 4, que está disponible en la pagina de descarga de ~CmapTools http://cmap.ihmc.us/download/ o en ftp://ftp.ihmc.us/Download~CmapTools/~CmapTools/
# Al conectarse desde un ~CmapTools a una carpeta de ~CmapServer, se debe tener cuidado al momento de suministrar el usuario y la contraseña, ya que por defecto, ~CmapTools guarda estos datos. Para que esto no ocurra, debe seleccionar la casilla para utilizar estos datos sólo para la sección actual.
# ~CmapServer viene con una herramienta denominada ~AdminTool la cual se puede utilizar para crear nuevos usuarios administradores, arrancar el servidor o pararlo tanto en la máquina local, como en máquinas remotas. Si desea utilizar esta herramienta de forma remota, debe instalar ~CmapServer en el equipo de administración.
# ~CmapServer puede actualizarse por sí mismo. Ejecute el script ~RUTA_INSTALACION/bin/update. No es necesario descargar el programa de nuevo de la página web si usted ya tiene instalada una versión anterior de la ~CmapServer.
# Para más información acerca de la arquitectura de la red de este sistema, permisos y control de acceso se puede consultar la siguiente dirección: http://cmap.ihmc.us/Documentation/WhitePapers.php 

! Instalación
* Solicitar el instalador de ~CmapServer al Institute for Human and Machine Cognition (IHMC), a través del formulario disponible en: http://cmap.ihmc.us/download/dl_~CmapServer_educ.php o descargarlo de  http://cmapdownload.ihmc.us/installs/~CmapServer/
* Crear los siguientes usuarios y grupos:
{{{
# groupadd cmapservice
# groupadd cmapadmins
# useradd -d /var/www/cmapserver -g cmapservice cmaps
# passwd cmaps
# usermod -G cmapadmins usuario (usuario que actuará como administrador)
}}}
* Crear en el mismo directorio donde se tiene el instalador de ~CmapServer, un archivo de texto llamado "Install~CmapServer.properties" y ajustarlo a sus necesidades teniendo en cuenta las recomendaciones planteadas anteriormente. Un ejemplo de este archivo sin personalizar lo puedes descargar de la siguiente página: http://cmap.ihmc.us/download/Install~CmapServer.properties. Algunos de los parámetros que se deben modificar en este archivo para una instalación típica, son:
** ''~INSTALLER_UI=silent''    Modo de instalación Silent, permite que la instalación de ~CmapServer corra sin ninguna interacción del usuario.
** ''~USER_INSTALL_DIR''    Directorio donde se instalará ~CmapServer, debe ser creado previamente.
** ''server.hostname=~CmapServer.midominio.org''    El nombre de host es la dirección de Internet que se utilizará para generar la URL de las páginas web de los Cmaps almacenados en el ~CmapServer, y está determinada automáticamente por el servidor.
** ''server.name= Descripción (Lugar de Origen)''    El Nombre del Servidor es la descripción que aparecerá en el Directorio de Lugares, así como en los ~CmapTools.
** ''admin.account'' y ''admin.password''    Usuario y contraseña para la administración del ~CmapServer (no tiene relación con los usuarios del sistema operativo):
** ''admin.email.address''    E-mail del administrador de ~CmapServer
** ''server.port''    El número de puerto que usted desea que ~CmapServer use para escuchar y recibir las solicitudes de los ~CmapTools. El puerto por defecto es el 4447.
** ''webserver.port''  El número de puerto para el servidor Web interno, este puerto por defecto es el 80, pero debe verificarse que no esté siendo usado por otro programa, de ser así se debe escoger otro. 
* Modificar los permisos e instalar
{{{
# chown cmaps.cmapservice -R ~RUTA_INSTALACION
# su cmaps
$ ./Linux~CmapServer_v4*.bin -f Install~CmapServer.properties
}}}
* Finalmente, crear un script en /etc/init.d para iniciar y detener el servicio como un demonio del sistema:
{{{
#! /bin/sh
NAME=CmapServer
DAEMON= (Directorio de instalación)

case "$1" in
  start)
    echo -n "Starting $NAME"
    echo .
    su -c $DAEMON/bin/CmapServer cmaps &
    ;;

  stop)
    echo -n "Stopping $NAME"
    echo .
    pkill -f CmapServer
    ;;

*)
    echo "Usage: /etc/init.d/$NAME {start|stop}"
    exit 1
    ;;
esac

}}}

! Cambios ~Post-Instalación
Si se deben hacer cambios en la configuración después de la instalación, se debe buscar el archivo serverconfig.txt en el directorio ~RUTA_INSTALACION/bin

! Integración con Apache
~CmapServer tiene su propio servidor web, por lo tanto debe correr en un puerto diferente cuando en el mismo equipo esta funcionando Apache. Sin embargo, existe una manera de utilizar Apache como puerta de entrada al servidor de ~CmapServer para que existe una mayor integración de los servicios web en un servidor, y además, evitar que los usuarios tengan problemas con el acceso a un puerto diferente al que se utiliza por defecto para la web (puerto 80).

Para hacer esta integración se deben habilitar los siguientes módulos en Apache:
{{{
# a2enmod proxy
# a2enmod proxy_http
}}}

Luego se adiciona las siguientes líneas en la configuración del Host Virtual para configurar el Reverse Proxy en Apache:
{{{
        ProxyRequests Off
        <Proxy http://cmapserver.dominio:8081/*>
                Order Deny,Allow
                Allow from 127.0.0.1
        </Proxy>

        ProxyPass               /cmapserver/    http://cmapserver.dominio:8081/
        ProxyPassReverse        /cmapserver/    http://cmapserver.dominio:8081/

}}}
* La opción ~ProxyRequests evita que se usen los módulos de Apache como Proxy abierto. Esto es especialmente importante para evitar el uso del servidor como spam o la navegación anónima.
* La opción <Proxy> delimita el uso del modulo proxy, sólo por un cliente (en este caso 127.0.0.1) y sólo para el sitio web http://cmapserver.dominio:8081. Esta delimitación se realiza por la misma razón que la anterior.
* Las opciones ~ProxyPass y ~ProxyPassReverse son las que hacen posible que se acceda a http://cmapserver.dominio:8081 (servidor remoto) a través de la dirección http://dominio (servidor local).

! Observaciones
* El usuario y contraseña que se establecen en el momento de la instalación del servidor, sirve para establecer los permisos de lectura, escritura y modificación de los archivos y directorios del servidor cuando se acceden desde la aplicación cliente ~CmapTools. El problema radica en que la aplicación cliente guarda por defecto todo usuario y contraseña que se suministra, por lo que se debe activar la opción "Guardar sólo para esta sección", cuando se este suministrando estos datos, si no se quiere que esto suceda. Esta lógica de funcionamiento es contraria a la de la mayoría de programas.
* No se pudo correr la aplicación ~AdminTools.
* El servidor web de ~CmapServer corre sobre un servidor Tomcat, el cual es un servidor de aplicaciones JSP, es decir, basadas en Java. Este servidor, al igual que el cliente instalan su propio JRE (Java Runtime Environment).
* El backup se realiza sobre el directorio <~RUTA_INSTALACION>/bin/cmaps

! Referencias
* http://cmapdownload.ihmc.us/installs/~CmapServer/
* http://www.helsinki.fi/~joorava/cmapserver/
* http://cmap.ihmc.us/Download/dl_~CmapServer.php?myPlat=Linux
* http://drakexle-miscelanea.blogspot.com/2008/01/ihmc-cmapserver-versin-414-para-linux.html
* http://httpd.apache.org/docs/2.2/mod/mod_proxy.html



Imprime un archivo
{{{
lp -d (nombre impresora) -n (numero copias) (ruta-archivo/s)
}}}
o
{{{
lpr -P (nombre impresora) -# (numero copias) -l (ruta-archivo/s)
}}}
La opción -l envía la impresión sin formato, sin pasar por el filtro del driver

Cancela todos los trabajos
{{{
cancel -a
}}}

Instala una impresora en el sistema operativo
{{{
lpadmin -p (nombre impresora) -E -v parallel:/dev/lp0 -m (driver ppd)
}}}
La opción -E habilita la impresora
La opción -m no es necesaria si se quiere imprimir directamente en el dispositivo, sin utilizar drivers

Borra una impresora del sistema operativo
{{{
lpadmin -x (nombre impresora)
}}}

Muestra todos los controladores disponibles en el sistema operativo
{{{
lpinfo -m
}}}
/usr/share/cups/model/ - Ubicación Drivers (ppd) Disponibles en el Sistema
/etc/cups/ppd - Ubicacion de los Drivers (ppd) de las impresoras instaladas

Muestra los puertos en los que puede haber una impresora
{{{
lpinfo -v
}}}

Muestra información del estado y los dispositivos de las impresoras instaladas
{{{
lpstat -t
}}}

Más Allá de Linux From Scratch: Versión 5.0 - Introducción a CUPS
http://es.tldp.org/Manuales-LuCAS/blfs-es/blfs-es-5.0/pst/cups.html

CUPS, mejorando la impresión con drivers del fabricante
http://bulma.net/body.phtml?nIdNoticia=1836
como obtener .ppd propietarios

Cups + Samba + Epson Epl5900l
http://bulma.net/body.phtml?nIdNoticia=2172
verificar funcionamiento de puerto lpt1

CUPS Documentation
http://www.cups.org/documentation.php

Configuración del archivo PPD
http://www.gentoo.org/doc/es/printing-howto.xml

~LinuxPrinting.org
http://www.linuxprinting.org/

Driver: omni
http://www.linuxprinting.org/show_driver.cgi?driver=omni

soporta la lq1070, lx300 y la fx1170
http://omniprint.sourceforge.net/

Lexmark Z615 - Driver for ~RedHat Linux 9.0
http://downloads.lexmark.com/cgi-perl/downloads.cgi?ccs=229:1:0:433:0:0&searchLang=en&os_group=Redhat&target=

Lexmark Z515 en Debian Sarge
http://www.nivel0.net/archives/lexmark-z515-debian-sarge/

Lexmark Z602 easy installation for Debian 3.1 Sarge
http://www.linuxprinting.org/pipermail/lexmark-list/2004q2/002550.html

Making the Lexmark Z515 work under Debian Linux
http://www.aquarionics.com/article/name/


! ARP
Muestra y modifica las tablas de traducción de direcciones IP a físicas usadas por el protocolo de resolución de direcciones (ARP).
{{{
ARP -s dir_inet dir_eth [dir_if]
ARP -d dir_inet [dir_if]
ARP -a [dir_inet] [-N dir_if]
}}}
-a Muestra las entradas actuales de ARP preguntando por los datos del protocolo. Si se especifica dir_inet, se muestran las direcciones IP y Física sólo para el equipo especificado. Cuando ARP se utiliza en más de una interfaz de red, entonces se muestran entradas para cada tabla ARP.
-g Lo mismo que -a.
-d Elimina el host especificado por dir_inet.
-s Agrega el host y asocia la dirección internet dir_inet con la dirección física dir_eth. La dirección física se especifica con 6 bytes en hexadecimal separados por guiones. La entrada es permanente.
-N dir_if Muestra las entradas de ARP para las interfaces de red especificadas por dir_if.
dir_inet  Especifica una dirección internet.
dir_eth Especifica una dirección física.
dir_if  Si está presente, especifica la dirección Internet de la interfaz con la tabla de traducción de direcciones a modificar.

Si no se especifica, se utiliza la primera interfaz aplicable. Ejemplo:
{{{
  > arp -s 157.55.85.212   00-aa-00-62-c6-09  .... Añade una entrada estática.
  > arp -a                                    .... Muestra la tabla ARP.
}}}

! FTP 
Transfiere archivos a y desde equipos ejecutando un Servidor de FTP (a veces llamado demonio). Ftp puede ejecutarse interactivamente.
{{{
FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-w:windowsize] [host]
}}}
-v Suprime la presentación de las respuestas del servidor remoto.
-n Suprime el inicio de sesión automático cuando se establece la conexión.
-i  Desactiva las peticiones interactivas de datos durante la transferencia de múltiples archivos.
-d Activa la depuración (debugging).
-g Desactiva el uso de comodines en nombres de archivo (ver GLOB).
-s:filename  Especifica un archivo de texto que contiene comandos de FTP;
-a Use cualquier interfaz local cuando vincule una conexión de datos.
-A inicio de sesión anónimo.
-w:buffersize  Sobrescribe el tamaño de 4096 del búfer de transferencia predeterminado.
host  Especifica el nombre del host o la dirección IP del host remoto al que se conecta.

! IPCONFIG y WINIPCFG
Configuración IP de Windows 98. Opciones de línea de comandos:
/All - Muestra información detallada.
/Batch [archivo] - Escribe en el archivo o . /WINIPCFG.OUT
/renew_all - Renueva todos los adaptadores.
/release_all - Libera todos los adaptadores.
/renew N - Renueva el adaptador N.
/release N - Libera el adaptador N.

! NBTSTAT
Displays protocol statistics and current TCP/IP connections using NBT (~NetBIOS over TCP/IP).
{{{
NBTSTAT [-a RemoteName] [-A IP address] [-c] [-n] [-r] [-R] [-s] [S] [interval] ]
}}}
-a   (adapter status) Lists the remote machine's name table given its name
-A   (Adapter status) Lists the remote machine's name table given its IP address.
-c   (cache)          Lists the remote name cache including the IP addresses
-n   (names)          Lists local ~NetBIOS names.
-r   (resolved)       Lists names resolved by broadcast and via WINS
-R   (Reload)         Purges and reloads the remote cache name table
-S   (Sessions)       Lists sessions table with the destination IP addresses
-s   (sessions)       Lists sessions table converting destination IP addresses to host names via the hosts file.
~RemoteName   Remote host machine name.
IP address   Dotted decimal representation of the IP address.
interval     Redisplays selected statistics, pausing interval seconds between each display. Press Ctrl+C to stop redisplaying statistics.

! NET
Para mas informativo¢n sobre un comando de NET especifico, escriba el nombre del comando seguido por /? (por ejemplo, NET VIEW /?).
NET CONFIG   Muestra la configuración de su grupo de trabajo.
NET DIAG     Ejecuta el programa de diagnosticos de Microsoft Network para mostrar información de diagnósticos sobre su red.
NET HELP     Proporciona información sobre comandos y mensajes de error.
NET INIT     Carga controladores de adaptadores de red y protocolos sin enlazarlos con el Administrador de protocolos.  
NET LOGOFF   Interrumpe la conexión entre su equipo y los recursos compartidos a los que este conectado.
NET LOGON    Le identifica como miembro de un grupo de trabajo.
NET PASSWORD Cambia su contraseña de conexión.
NET PRINT    Muestra información sobre colas de impresión y controla trabajos de impresión.
NET START    Inicia servicios.
NET STOP     Detiene servicios.
NET TIME     Muestra la hora o sincroniza su equipo con el reloj de  Microsoft Windows para Trabajo en Grupo Windows NT, Windows 95, o el servidor de reloj ~NetWare.
NET USE      Conecta o desconecta un recurso compartido o muestra información sobre conexiones.
NET VER      Muestra el tipo o la versión del redireccionador del grupo de trabajo que esta utilizando. 
NET VIEW     Muestra una lista de equipos que comparten recursos o la lista de recursos compartidos de un equipo determinado.

! NETSTAT
Muestra estadísticas del protocolo y conexiones TCP/IP actuales.
{{{
NETSTAT [-a] [-e] [-n] [-s] [-p proto] [-r] [intervalo]
}}}
-a            Muestra todas las conexiones y puertos escucha.
-e            Muestra estadísticas Ethernet. Se puede combinar con -s.
-n            Muestra números de puertos y direcciones en formato numérico.
-p proto      Muestra conexiones del protocolo especificado por proto; que puede ser tcp o udp. Si se usa con la opción -s para mostrar estadísticas por protocolo, proto puede ser TCP, UDP o IP.
-r            Muestra el contenido de la tabla de rutas.
-s            Muestra estadísticas por protocolo. En forma predeterminada, se muestran para TCP, UDP e IP; se puede utilizar la opción -p para especificar un subconjunto de lo predeterminado.
intervalo     Vuelve a mostrar las estadísticas seleccionadas, haciendo pausas en el intervalo de segundos especificado entre cada muestra. Presione ~Ctrl+C para detener la actualización de estadísticas. Si se omite, netstat imprimirá la actual información de configuración una vez.

! PING
{{{
ping [-t] [-a] [-n cantidad] [-l tamaño] [-f] [-i TTL] [-v TOS]
          [-r cantidad] [-s cantidad] [[-j lista de host] | [-k lista de host]]
          [-w Tiempo de espera agotado] lista de destino
}}}
-t                 Solicita eco al host hasta ser interrumpido. Para ver estadísticas y continuar: presione ~Ctrl-Inter. Para interrumpir: presione ~Ctrl-C.
-a                 Resuelve direcciones a nombres de host.
-n cantidad        Cantidad de solicitudes de eco a enviar.
-l tamaño          Tamaño del búfer de envíos.
-f                 No fragmentar el paquete.
-i TTL             Tiempo de vida.
-v TOS             Tipo de servicio.
-r cantidad        Registrar la ruta para esta cantidad de saltos.
-s cantidad        Registrar horarios para esta cantidad de saltos.
-j lista de hosts  Ruta origen variable en la lista de host.
-k lista de hosts  Ruta origen estricta en la lista de host.
-w tiempo          Tiempo de espera agotado de respuesta en milisegundos.

! ROUTE
Controla las tablas de enrutamiento de la red.
{{{
ROUTE [-f] [comando [destino] [MASK máscara] [puerta][METRIC métrica]]
}}}
-f           Borra de las tablas de enrutamiento todas las entradas de las puertas de enlace. Cuando se utiliza junto con otro comando, las entradas se eliminan antes de ejecutar el comando.
comando      Especifica uno de los cuatro comandos siguientes: PRINT Imprime una ruta, ADD Agrega una ruta, DELETE Elimina una ruta, ADD Agrega una ruta, DELETE Elimina una ruta, CHANGE Modifica una ruta existente
destino      Especifica el host de destino.
MASK         Si la clave MASK está presente, el siguiente parámetro es interpretado como el parámetro de la máscara de red.
máscara      Especifica un valor de máscara de subred asociado con esta ruta.  Si no se especifica, se predetermina a 255.255.255.255.
puerta       Especifica la puerta de enlace.
METRIC       Especifica que el siguiente parámetro 'métrica' es el costo para este destino

Todos los nombres simbólicos de destino se buscan en el archivo de base de datos NETWORKS. Los nombres simbólicos para las puertas de enlace se buscan en el archivo de base de datos de nombre host HOSTS.

Si el comando es IMPRIMIR o ELIMINAR, se puede utilizar comodines para el destino y la puerta de enlace, o se puede omitir el argumento Puerta.

Ejemplos:
{{{
    > route PRINT
    > route   ADD 157.0.0.0     MASK 255.0.0.0   157.55.80.1 METRIC  3
                  ^destination       ^mask       ^gateway            ^metric
    > route PRINT
    > route DELETE 157.0.0.0
    > route PRINT
}}}

! TRACERT
{{{
tracert [-d] [-h máximo_de_saltos] [-j lista_de_hosts] [-w tiempo_de_espera] nombre_de_destino
{{{
-d                   No convierte direcciones en nombres de hosts.
-h máximo_de_saltos  Máxima cantidad de saltos en la búsqueda del objetivo.
-j lista-de-hosts    Enrutamiento relajado de origen en la lista de hosts.
-w tiempo_de_espera  Tiempo en milisegundos entre intentos.

! ATTRIB
Muestra o modifica los atributos de archivo.
{{{
ATTRIB [+R | -R] [+A | -A] [+S | -S] [+H | -H] [[unidad:][ruta]archivo] [/S]
}}}
+   Establece un atributo.
-   Borra un atributo.
R   Atributo de archivo de sólo lectura.
A   Atributo de archivo modificado.
S   Atributo de archivo de sistema.
H   Atributo de archivo oculto.
/S  Procesa archivos en todos los directorios de la ruta especificada.

! DELTREE
Elimina un directorio y todos los subdirectorios y archivos incluidos.
{{{
DELTREE [/Y] [unidad:]ruta [[unidad:]ruta[...]]
}}}
/Y              Omite la solicitud de confirmación para eliminar el subdirectorio.
[unidad:]ruta   Especifica el nombre del directorio que desea eliminar.

Nota: use DELTREE con cuidado. Todos los archivos y subdirectorios dentro del directorio especificado serán eliminados.

! XCOPY
Copia archivos y árboles de directorios.
{{{
XCOPY origen [destino] [/A | /M] [/D[:fecha] [/P] [/S [/E]] [/W]
                       [/C] [/I] [/Q] [/F] [/L] [/H] [/R] [/T] [/U]
                       [/K] [/N]
}}}
origen    Especifica archivos a copiar.
destino   Especifica ubicación y/o nombre de nuevos archivos.
/A        Copia archivos con atributo modificado, no cambia atributo.
/M        Copia archivos con atributo modificado, desactiva atributo modificado.
/D:fecha  Copia archivos modificados en o después de la fecha especificada. Si no se proporciona fecha, copia sólo archivos cuya fecha origen es más reciente que la destino.
/P        Solicita confirmación antes de crear archivo destino.
/S        Copia directorios y subdirectorios no vacíos.
/E        Copia directorios y subdirectorios incluyendo los vacíos. Igual que  /S /E. Puede ser utilizado para modificar /T.
/W        Solicita que presione una tecla antes de copiar.
/C        Continua copiando incluso si se producen errores.
/I        Si el destino no existe y está copiando más de un archivo, asume que el destino es un directorio.
/Q        No muestra nombres de archivos al copiar.
/F        Muestra nombres completos de archivos origen y destino al copiar.
/L        Muestra archivos que serán copiados.
/H        También copia archivos ocultos y de sistema.
/R        Sobrescribe archivos de sólo lectura.
/T        Crea estructura de directorios, pero no copia archivos No incluye directorios o subdirectorios vacíos. /T /E incluye directorios y subdirectorios vacíos.
/U        Actualiza archivos que ya existen en destino.
/K        Copia atributos. Xcopy normal, restablecerá atributos de sólo lectura.
/Y        Sobrescribe archivos existentes sin solicitar confirmación.
/-Y       Solicita confirmación para sobrescribir archivos existentes.
/N        Copia utilizando los nombres cortos generados.

! TELNET
[C:\Windows] Realiza la conexión a un sistema remoto. Requiere el nombre o dirección IP del Host, el puerto y el tipo de terminal.


un nickname expira despues de 60 dias sin uso
un canal expira despues de 120 dias sin uso

! Comandos como usuario de un Canal
; /nick nuevo_nick 
: Cambio de nick.
; /msg ~NickServ IDENTIFY <password>
: autenticar Nick actual.
; /whois alias 
: Muestra información adicional sobre el usuario especificado.
; /whowas nickname
: Muestra información sobre un usuario que no esta conectado
; /join #nombre_del_canal
: Se usa para entrar en el canal indicado. Si ese canal no existe se creará.
; /msg chanserv info <#channel> :
: Informacion de un canal registrado
; /me (mensaje) 
: pones en el canal actual un mensaje en forma de "acción" que va precedido de tu nick.
; /away (mensaje opcional)
: Informa al resto del canal que no estás atendiendo y el mensaje es la explicación del porqué.
; /msg |nick|
: Para enviar un mensaje a alguien.
; /query |nick|
: Para hablar con alguien en privado
; /list
: Lista los canales disponibles en el servidor IRC elegido
; /clear
: Borra toda la información en pantalla
; /help (comando)
: muestra la ayuda para utilizar ese comando
; /ignore (nick)
: Para ignorar y no recibir nada de otro usuario
; /part (mensaje)
: Para abandonar el canal en el que estemos (/part Hasta la vista!).
; /quit (mensjae)
: Salir del IRC. (/quit Nos vemos mañana) 

! Comandos como Operador de un Canal
; /msg ~ChanServ OP <#channel>
: Tomar privilegios como operador. No sirve en OFTC, a cambio se debe colocar que el usuario tome privilegios de operador automáticamente.
; /msg ~ChanServ flags <#channel> <nick> +o
: Convierte a un usuario registrado en operador de un canal
; /invite |nick| #canal
: Envía una invitación a entrar en nuestro canal a otro usuario que no se encuentre en el mismo. 
; /voice |nick|
: Le da voz a una persona en un canal moderado.
; /kick #canal |nick| (mensaje)
: Echar a alguien del canal. Necesitamos tener op (@) en el canal. También podemos especificar un mensaje o razón. 
; /topic #canal (mensaje)
: Para cambiar el topic del canal.
; /msg chanserv set #canal mlock +m
: Establece el canal moderado, así que si no se activa a las personas para que hablen, no lo pueden hacer
; /msg chanserv set #canal mlock +i
: Sólo se permiten invitados (incluso el operador no puede entrar si se sale, en ese caso debe desbloquearlo primero).

! Registrar un NICK
; /nick <nickname>
: Cambiar a un Nick
; /msg nickserv IDENTIFY <password>
: Autenticar Nick actual 
; /msg nickserv info <nick>
: Obtener Información de un Nick Registrado
; /msg nickserv REGISTER (password) (email address)
: Registro del Nick actual
; /msg nickserv link <primer-nickname> <password>
: Enlazar un nickname alternativo, previamente creado.
; /msg nickserv set email <your-email-address>
: Adiciona una direccion de correo al ninckname
; /msg nickserv set hide email on
: Ocultar el correo a otros
; /msg nickserv ghost <nick> <password>
: Desconectar el rastro de un Nick cuando se ha desconectado inadecuadamente o cuando otra persona lo esta usando
; /msg nickserv help set <option>
: Establecimiento de Opciones para el Nick registrado actual. Opciones Address - Email - Guard - Hide - Kill - Language - ~NoOp - Password
; /msg nickserv set password <new password>
: Cambiar el password
; /msg nickserv drop <password>
: Borrar el Registro del Nick actual

! Registrar un Canal
Primero se debe ingresar con el nickname que va a hacer el registro
; /msg chanserv info <#channel>
: Información de un canal registrado
; /join <#channel>
: Entrar a un canal, si este no existe lo crea
; /msg chanserv register <#channel> <password>
: Registrar el canal con 
; /MSG CHANSERV SET <#channel> GUARD ON
: Coloca un guardián en el Canal para evitar que lo roben. No existe en OFTC
; /MSG CHANSERV SET <channel> AUTOOP ON
: Operador toma control automáticamente en el canal. Sólo en OFTC
; /TOPIC <mensaje>
: Colocar el Topico del Canal: 
; /MSG CHANSERV SET <#channel> TOPICLOCK ON
: Bloquea la colocación del Topic
; /MSG CHANSERV SET <#channel> URL <http://url>
: URL del Canal
; /MSG CHANSERV SET <#channel> EMAIL <email>
: EMAIL del Canal: 
; /msg ~ChanServ OP <#channel> <nickname>
: Dar privilegios de operador a un Nick registrado
; /msg chanserv drop <#channel>
: Borrar un Canal por el Nick fundador
; /msg chanserv flags  <#channel> [nickname] [flag_changes]
: Establece privilegios de los usuarios sobre el canal. No funciona en OLTC
; /MODE #demo +/-[flag]
: Establece o no una de las siguientes opciones

Private (p) or Secret (s): The "+p" or "+s" will be explained later, for now consider them to be flags denoting the nature of the channel. These channels provide privacy and security for insiders and may or may not welcome newcomers. If you don't know the names of these exclusive channels already, you won't find them using /LIST. Even if you know the channel name, you still cannot use /WHO #channelname to see who is presently in there unless you join the channel yourself. Note: private and secret are not the same thing, but the difference is pretty arcane.

Channel ops (o [nickname]): Any op can give ops to anybody else, and once that other person gains ops, he has the same power as you do, including the ability to remove your ops or "deop" you, or even to kick you out. This is known as a takeover. Don't share ops with others unless you trust them fully! /MODE #demo +o buddy  You can also do a few of these together on the same line, such as: /MODE #demo +ooo larry curley moe

Moderated (m): On a moderated channel, only channel operators can talk publicly, others can only listen and will get "cannot send to channel" errors if they try to talk. The exception is if you are given a voice (+v). Moderated mode is useful for conferencing or keeping control over very busy channels.

Invite Only (i): People can only join your channel if an op permits it. To set it: /MODE #demo +i  Then to let buddy in, use the /INVITE command: /INVITE buddy #demo 

Limited (l [number]): Only that number of people are allowed to /JOIN the channel. /MODE #demo +l 20  Later to remove the limit (note you don't need to specify the number): /MODE #demo -l. 

Keyword or Password Protected (k keyword): You must know the keyword to /JOIN the channel. To set the keyword as "trustno1": /MODE #demo +k trustno1  Then in order for somebody outside to join, they must type: /JOIN #demo trustno1 And to remove the keyword: /MODE #demo -k trustno1 

! Más información:
* http://www.starchat.net/chanserv.htm
* http://www.starchat.net/nickserv.htm
* http://www.oftc.net/oftc/FAQ




Montar un directorio compartido remoto como una partición. El comando smbmount se puede ejecutar como usuario, mientras que mount sólo se puede utilizar como root. Para desmontar se requiere ser root.
{{{
$ smbmount //castor/documentos /home/ulises/mount -o username=ulises 
# smbumount /home/ulises/mount
}}}

Es posible que la primera vez que se utilice el comando smbmount se requiera cambiarle los permisos:
{{{
# chmod u+s /usr/bin/smbmnt
}}}

Verificación del archivo smb.conf
{{{
# testparm
}}}

Adicionar y borrar usuarios a samba
{{{
# smbpasswd -a login (adicionar usuario)
# smbpasswd -x login (borrar usuario)
}}}

Verificación de los recursos compartidos en un equipo remoto
{{{
$ smbclient -U doctorado -L secretariacade
$ net -l share -S host (información sobre los recursos compartidos de un pc)
$ net -l user -S host (información de usuarios samba)
}}}

Monitorio de los equipos conectados a los recursos compartidos en mi equipo
{{{
$ smbstatus
}}}

Listado de los equipos que responden a solicitudes smb en una red local:
{{{
$ findsmb
}}}

Más información en:
* http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/ch-samba.html




! CONTROL
[C:\Windows] Muestra el Panel de Control.

! DRWATSON
[C:\Windows] Revición y Estado del Sistema.

! REGEDIT
[C:\Windows] El Editor del Registro es una herramienta avanzada que le permite cambiar la configuración del Registro del sistema.

! SCANREGW
[C:\Windows] Busca errores en el registro y hace copia de seguridad.

! SCANREG
[C:\Windows\Command] Busca errores en el registro y hace copia de seguridad.

! TUNEUP
[C:\Windows] Asistente para mantenimiento automático. Actúa en conjunto con el Planificador de Tareas.

! WINVER
[C:\Windows] Versión de Windows.

! SYSMON
[C:\Windows] Monitor de Sistema.

! NETWATCH
[C:\Windows] Monitor de Red.

! CLEANMGR
[C:\Windows] Liberador de Espacio en Disco.

! SCANDSKW
[C:\Windows] Comprueba y repara errores físicos y lógicos en el disco duro.
x: Especificar la unidad que desee comprobar. 
/a Comprobar todos los discos duros locales. 
/n Iniciar y salir de ~ScanDisk automáticamente. 
/p Evitar que ~ScanDisk corrija los errores que encuentre. 

! DEFRAG
[C:\Windows] Organiza los archivos y el espacio no utilizado en el disco duro para que los programas se ejecuten más rápidamente.

! ~MSINFO32
[C:\Archivos de programa\Archivos comunes\Microsoft Shared\MSINFO] Herramienta básica para recopilar información acerca de la configuración del sistema. Su propósito principal es el de servir de ayuda a los ingenieros de los Servicios de soporte técnico para encontrar información indicativa de los problemas que pueda tener el sistema.

! DIRECTCC
[C:\Windows] Conexión directa por cable.

! NOTEPAD
[C:\Windows] Bloc de Notas.

! WORDPAD
[C:\Archivos de programa\Accesorios] Wordpad.

! PBRUSH
[C:\Windows] Paint.

! MSPAINT
[C:\Archivos de programa\Accesorios] Paint.

! WINPOPUP
[C:\Windows] Mensajes Emergentes.

! ICSSETUP
[C:\Windows\System] Configuracion conexión compartida a Internet.

! MSCONFIG
[C:\Windows\System] Programa configuración del sistema.

! SFC
[C:\Windows\System] Comprobador de archivos del sistema.

! SYSEDIT
[C:\Windows\System] Editor de archivos de configuración del sistema.

{{{
$ msgfmt --output-file=locale/es/LC_MESSAGES/helloworld.mo locale/es/helloworld.po
}}}

Más información:
* http://my.opera.com/th3pr0ph3t/blog/localizacion-en-python-usando-gettext
! ping


! fping
Permite hacer ping a una lista de equipos a través del mecanismo round-robin.

Muestra los equipos que hacen ping en toda una red lógica o en un rango de red,  (complemento para nmap y arp-scan)
{{{
fping -g 192.168.123.0/24 2> /dev/null | grep alive
fping -s -g 192.168.123.1 192.168.123.30  2> /dev/null | grep alive
}}}

Más información
* http://fping.sourceforge.net/
* https://lamiradadelreplicante.com/2011/04/30/deteccion-de-intrusos-en-la-red-con-fping/

! mtr 

! telnet

! traceroute
//Se instala con el paquete traceroute//

! tracepath
//Se instala con el paquete tracepath//

! netstat
Aplicación para mostrar información sobre el estado de las conexiones de red en un computador:
{{{
$ netstat -netup
}}}
-r tabla de enrutamiento
-i información estadística de las intercaes
-s información estadísticas de los protocolos IP. UDP y TCP
-n muestra host y puertos como números
-e presenta información de usuarios e inodos
-p indica el PID del programa asociado a la conexión
-l informa los puertos abiertos en el equipo
-a muestra todos los puertos (abiertos y cerrados)
-t solo conexiones tcp
-u solo conexiones udp

! iptraf
Monitor de tráfico IP por consola. A través de un menú se puede escoger: monitor de tráfico (conexiones, puertos y cantidad de paquetes); estadísticas generales por interfase (cantidad de paquetes y velocidad);  estadísticas específicas por interfase (conteo de paquetes TCP, UDP, ICMP, IP y otros - y velocidad de entrada y salida); estadísticas desglosadas (conteo de paquetes por puerto TCP/UDP); monitor de estaciones LAN (conteo de paquetes intercambiado con cada nodo de la LAN a la que esta conectado el equipo). //Se instala con el paquete iptraf//
{{{
# iptraf
}}}
Más información en:
* http://iptraf.seul.org/
* http://linux.die.net/man/8/iptraf
* http://es.wikipedia.org/wiki/IPTraf

! pktstat
Monitor de conexiones en tiempo real por consola. Informa sobre la velocidad, cantidad de paquetes (en porcentaje) y conexiones para cada protocolo en redes IP. //Se instala con el paquete pktstat//
{{{
# pktstat -i eth0 -n -t
# pktstat -i eth0 -n -t "tcp"
}}}
-F muestra el nombre completo de los host
-n no hace resolución de nombres
-t ordena la visualización por conteo de bits
Más información en:
 * http://www.adaptive-enterprises.com.au/~d/software/pktstat/
 * http://linux.die.net/man/1/pktstat

! tcptrack
Monitor de conexiones TCP en tiempo real por consola. Por cada conexión muestra las direcciones IP, puertos, estado y la velocidad. Es posible filtrar la información utilizando expresiones pcap tales como las utilizadas por tcpdump. //Se instala con el paquete tcptrack//
{{{
# tcptrack -i eth0
}}}
Más información en:
* http://www.rhythm.cx/~steve/devel/tcptrack
* http://linux.die.net/man/1/tcptrack    *

! iftop
Herramienta para determinar el ''consumo de ancho de banda de las conexión '' (comunicación de dos equipos a través de un puerto / protocolo).
{{{
# iftop -i eth0
}}}
Se puede filtrar el trafico por interfaz, por rango de direcciones, etc.
{{{
# iftop
# iftop -i eth0
# iftop -F 8.8.8.8/24 -i eth0
# iftop -i eth0 -f "dst port 22"
}}}

Más información en:
* http://lamiradadelreplicante.com/2014/10/14/vigila-el-consumo-de-ancho-de-banda-de-tu-red-con-iftop/
* https://tournasdimitrios1.wordpress.com/2011/01/20/iftop-monitor-and-analyze-your-network-traffic-on-linux/

! dstat
Visualizador de recursos del sistema que remplaza vmstat, iostat, netstat, nfsstat e ifstat. //Se instala con el paquete dstat//
* http://dag.wieers.com/home-made/dstat/

! ifstat
* http://gael.roualland.free.fr/ifstat/

! ethstatus

! trafshow

! netwatch
* http://www.slctech.org/%7Emackay/NETWATCH/netwatch.html

! ipband
* http://ipband.sourceforge.net/

! ~EtherApe
Herramienta de monitoreo que gráfica las conexiones TCP en una red, de acuerdo con el ancho de banda que utilizan. 
* http://etherape.sourceforge.net/

! Referencias
* http://www.noah.org/wiki/Packet_sniffing
! ifconfig

! route 

! arp
! Linux shell and music files
http://snippetsnap.com/snippets/858-Linux-shell-and-music-files

Instalación de paquetes necesarios:
{{{
# apt-get install id3v2 lame cdparanoia abcde normalize-audio vorbis-tools ffmpeg
}}}

Rip CD into .wav:
{{{
$ cdda2wav -B -H -D /dev/cdrom -s -x
}}}

Rip CD directly into .mp3:
{{{
$ abcde -d /dev/hdc -N -x -o mp3
}}}

Rip CD directly into .ogg:
{{{
$ abcde -d /dev/hdc -N -x -o ogg
}}}

Convert .wav to .mp3: (quality high)
{{{
$ lame -h -m j *.wav
$ lame --abr 128 -m j *.wav
}}}

Convert .wav to .ogg (quality 7/10 and 128kbps).
{{{
$ oggenc -b 128 -q 7 onefile.wav
}}}

Convertir .m4a to .mp3
{{{
$ ffmpeg -i archivo.m4a -acodec libmp3lame archivo.mp3
}}}

Convert .mp3 to .wav
{{{
$ lame --decode file.mp3 output.wav
}}}

Normalize:
{{{
$ normalize-mp3 *.mp3
$ normalize-ogg *.ogg
}}}

From .ogg to .mp3:
{{{
$ ffmpeg -i onefile.ogg onefile.mp3
}}}

From .mp3 to .ogg:
{{{
$ ffmpeg -i onefile.mp3 onefile.ogg
}}}

Listen mp3 :-)
{{{
$ play onefile.mp3
}}}


! Compression ratios, bitrate and quality
http://lame.cvs.sourceforge.net/*checkout*/lame/lame/doc/html/node6.html

32 kbps   7.5 kHz  AM radio
96 kbps   11 kHz   FM radio
128 kbps  16 kHz   near CD  


! Some command line examples
http://lame.cvs.sourceforge.net/*checkout*/lame/lame/doc/html/examples.html

Average bit rate encoding:
{{{
$ lame --abr 32 sample.wav sample.mp3
}}}
Nota: Para grabaciones de voz o de radio AM es suficiente con 32 kbps de bitrate

Para cambiar la frecuencia de muestreo, ya que con 8khz no se puede reproducir con JW FLV Media Player:
{{{
$ lame --resample 22.05 a.wav a.mp3
}}}

Para cambiar de stereo a mono:
{{{
$ lame -m m a.wav a.mp3
--tt "title" --ta "artist" --tl "album" --ty "year" --tc "comment"
}}}

! ~EasyTAG
* Para Windows y Linux http://easytag.sourceforge.net



{{{
$ convert origen.JPG -geometry 640x480> -density 72 -quality 85 destino.jpg
}}}

Referencias:
* http://baidarka-dw803.blogspot.com/2008/03/cmo-llamo-al-nano-ese.html
* http://www.imagemagick.org/script/convert.php
* http://www.imagemagick.org/Usage/



Convertir de un formato a otro archivos de audio o video, para ello algo tan sencillo como (sirve para flv, avi, mpg):
{{{
ffmpeg -i archivo1.avi archivo2.mpg
}}}

''OGM a Mpeg2 para DVD''
{{{
ffmpeg -i entrada.ogm -s 720×576 -vcodec mpeg2video -acodec libmp3lame salida.mpg
mencoder -idx video.ogv -ovc lavc -oac lavc -lavcopts vcodec=mpeg2video -of mpeg -o video.mpg
}}}

''OGV a AVI''
{{{
mencoder entrada.ogg -ovc lavc -oac mp3lame -o salida.avi
mencoder -idx video.ogv -ovc lavc -oac mp3lame -o video.avi
}}}

''OGV a AVI con xVID''
{{{
mencoder input.ogv -ovc xvid -oac mp3lame -xvidencopts pass=1 -o output.avi
}}}

''AVI a AVI con DIVX (Mpeg4)''
{{{
ffmpeg -i entrada.avi -s 320×240 -vcodec msmpeg4v2 salida.avi
}}}

''AVI a OGV''
{{{
ffmpeg2theora entrada.avi -v 5 -o salida.ogv        (Calidad de 0 a 10)
ffmpeg2theora entrada.avi -a 8 -o salida.ogv
ffmpeg2theora entrada.avi -V 600 -o salida.ogv      (Tasa de Bits)
ffmpeg2theora entrada.avi -A 128 -o salida.ogv
}}}

''FLV a AVI con Mpeg''
{{{
ffmpeg -i entrada.flv salida.avi
}}}

''FLV a AVI con xVID (Mpeg4)''
{{{
mencoder entrada.flv -ovc xvid -vf scale=720:405 -oac mp3lame -xvidencopts pass=1 -o output.avi
}}}

''AVI a FLV''
{{{
ffmpeg -y -i entrada.avi -threads 2 -threads 1 -pix_fmt yuv420p -g 300 -qmin 3 -async 50 -acodec copy salida.flv
ffmpeg -i entrada.avi -acodec mp3 -ab 32 -ac 1 -ar 44100 salida.flv
}}}

''MPG a AVI''
{{{
ffmpeg -i entrada.mpg salida.avi
}}}

''AVI a MPG''
{{{
ffmpeg -i entrada.avi salida.mpg
}}}

''~MP4 a AVI'' (sin perdida)
{{{
ffmpeg -i entrada.mp4 -vcodec mpeg4 -acodec libmp3lame -sameq salida.avi
}}}

''AVI a ~MP4 para iPod/iPhone''
{{{
ffmpeg -i entrada.avi -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320×180 salida.mp4
}}}

''AVI a ~MP4 para PSP''
{{{
ffmpeg -i entrada.avi -b 300 -s 320×240 -vcodec xvid -ab 32 -ar 24000 -acodec aac salida.mp4
}}}

''3GP a AVI con Xvid''
{{{
ffmpeg -i entrada.3gp -f avi -vcodec xvid -acodec mp3 -ar 22050 salida.avi
}}}

''AVI a 3GP''
{{{
ffmpeg -i entrada.avi -s qcif -vcodec h263 -acodec libmp3lame -ac 1 -ar 8000 -r 25 -ab 32 -y salida.3gp
}}}

''3GP a ~MPEG4''
{{{
ffmpeg -i entrada.3gp -vcodec mpeg4 -acodec libmp3lame salida.mpg
}}}

''MPG a 3GP''
{{{
ffmpeg -i video.mpg -s qcif -vcodec h263 -acodec libmp3lame -ac 1 -ar 8000 -ab 32 -y video.3gp
}}}

''AVI a DV''
{{{
ffmpeg -i entrada.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 salida.dv
}}}

''AVI a MPEG para DVD''
{{{
ffmpeg -i entrada.avi -target pal-dvd -ps 2000000000 -aspect 16:9 salida.mpeg
}}}

''AVI a SVCD Mpeg2''
{{{
PAL:  ffmpeg -i entrada.avi -target pal-svcd salida.mpg
NTSC: ffmpeg -i entrada.avi -target ntsc-svcd salida.mpg
}}}

''AVI a VCD Mpeg2''
{{{
PAL: ffmpeg -i entrada.avi -target pal-vcd salida.mpg
NTSC: ffmpeg -i entrada.avi -target ntsc-vcd salida.mpg
}}}

Obtener información de un archivo de audio o video:
{{{
ffmpeg -i archivo.mpg
}}}

Concatenar dos o varios videos y generar uno solo
{{{
mencoder video1.avi video2.avi -o videoFinal.avi
}}}

Extraer una parte del video con ffmpeg
{{{
ffmpeg -i pelicula.avi -ss 0:0:48 -t 0:1:58 -sameq pelicula_parte.avi
}}}

Extraer una parte del video con mencode: hay perdida de calidad al principio del video
{{{
mencoder pelicula.avi -ovc copy -oac copy -ss 0 -endpos 700mb -o pelicula_parte.avi             (Corte Tamaño)
mencoder pelicula.avi -ovc copy -oac copy -ss 1:10 -endpos 8:00 -o pelicula_alguna_parte.avi     (Corte por Duración)
}}}

Recortar dimensiones del video
{{{
ffmpeg -i entrada.avi -croptop 100 -cropbottom 100 -cropright 100 -cropleft 100 -sameq salida.avi      (Mantiene calidad)
ffmpeg -i entrada.avi -croptop 100 -cropbottom 100 -cropright 100 -cropleft 100 -qmax 6 salida.avi     (5: Calidad + o - como la original; 8-10 Calidad un poco menor, pero aceptable)
ffmpeg2theora entrada.avi --croptop 100 --cropbottom 100 --cropright 100 --cropleft 100 -o salida.ogv
}}}

Extraer el audio en ~MP3 de un archivo de video AVI:
{{{
ffmpeg -i video.avi audio.mp3
ffmpeg -i video.avi -vn -acodec copy audio.mp3
ffmpeg -i video.avi -vn -ar 44100 -ac 2 -ab 192 -f libmp3lame audio.mp3
}}}

Extraer el audio en WAV de un archivo AVI:
{{{
ffmpeg -i video.avi audio.wav
}}}
{{{
mplayer -vo null -ao pcm:file=audio.wav video.avi
}}}

Añadir audio WAV a video AVI:
{{{
mencoder -o mivideo1.avi -ovc copy -audiofile misonidoperfecto.wav -oac pcm mivideo0.avi
}}}

Añadir audio WAV como ~MP3 a video AVI:
{{{
mencoder video-sinAudio.avi -o videoFinal.avi -ovc copy -oac mp3lame -audiofile audio.wav
}}}

Añadir audio ~MP3 a un video:
{{{
mencoder video-sinAudio.avi -o videoFinal.avi -ovc copy -oac copy -audiofile audio.mp3
}}}

Aumentar volumen en un video (AVI):
{{{
mencoder -ovc copy -oac mp3lame -lameopts abr:br=128:vol=7 -o salida.avi entrada.avi
}}}

Extraer el video AVI de un archivo AVI olvidándonos del audio:
{{{
ffmpeg -i archivo.avi -an -vcodec copy video.avi
}}}

Extraer imágenes de un AVI:
{{{
ffmpeg -i video.avi imagen%d.jpg
ffmpeg -i video.avi -r 1 -ss 00:00:20 -t 1 captura%d.jpg
}}}

Convertir imágenes en video:
{{{
ffmpeg -f image2 -i imagen%d.jpg video.mpg
}}}

Convertir video en animación GIF:
{{{
ffmpeg -i entrada.avi salida.gif
ffmpeg -i entrada.avi -pix_fmt rgb24 final.gif
}}}

Escalar un video en cualquier formato:
{{{
ffmpeg -i entrada.mp4 -s 320×240 -sameq salida.*
avconv -i entrada.,p4 -s 320×240 salida.mp4
mencoder videoOriginal.avi -ovc copy -oac copy -lavcopts vcodec=mpeg4 -vf scale=320:240 -o videoEscalado.avi
}}}

Rotar un video. Con rotate=1 lo rotará 90º en sentido horario y con rotate=2 lo rotará 90º en sentido antihorario:
{{{
avconv -i videoOriginal.mp4 -vf transpose=1 videoRotado.mp4
mencoder -vop rotate=1 -oac pcm -ovc lavc videoOriginal.avi -o videoRotado.avi
}}}

Incluir subtitulos en un video
{{{
mencoder -ovc lavc -oac mp3lame pelicula.avi -o pelicula+subtitulos.avi -sub subtitulo.{srt, sub, etc.}
}}}
Con el Estándar ~HTML5, los nuevos navegadores reproducen los videos en formato ~MP4, Ogg y ~WebM, pero como estos son contenedores, es importante conocer los codecs soportados:
# ~MP4: Video H.264 y Audio AAC o ~MP3
# Ogg: Video Theora y Audio Vorbis
# ~WebM (basado Matroska): Video ~VP8 y Audio Vorbis

eXeLearning permite cargar videos de cualquiera de estos formatos, además de FLV, sin embargo en las pruebas de visualización en diferentes dispositivos, los videos en ~MP4 fueron lo de mayor compatibilidad. Para convertir un video de cualquier formato a ~MP4, se debe tener en cuenta que utilice el codec de video H.264.

Para conocer los codecs de un archivo de video, se pueden utilizar los siguientes comandos:
{{{
$ avprobe
$ mediainfo
}}}

Después de probar varios conversores en Lubuntu/Ubuntu, el que permitió convertir cualquier formato de video en ~MP4 con los codec apropiados y con la posibilidad de ajustar los parámetros, fue: ''~HandBrake'' (También viene para Windows y Mac). Este programa sirve para convertir DVD a archivos ~MP4. Las instrucciones para instalarlo adecuadamente en Lubuntu/Ubuntu 14.04 están en: http://askubuntu.com/questions/473308/only-mkv-format-available-in-handbrake

Algunos de los programas descartados, fueron:
* ~WinFF: Al seleccionar el formato de archivo de salida, los campos de los parámetros salían en blanco y no se sabia que colocar para ajustarlos. En este caso era mejor hacer la conversión por línea de comandos.
* Curlw: Interfaz similar a ~WinFF, pero en donde si salían los parámetros de configuración de salida, el problema es que no daba opciones para cambiarlos. En este caso era mejor hacer la conversión por línea de comandos.
* Arista: No se encontró un formato de salida acorde con lo que se necesitaba.
Envío de correos personalizados:
# Configurar la cuenta de envío de correo. Si es una cuenta de Gmail, tener en cuenta lo siguiente:
## Habilitar en la cuenta de correo el acceso de aplicaciones menos seguras: https://www.google.com/settings/security/lesssecureapps
## En la configuración de las opciones de envío de correo, colocar:
### Nombre y Dirección de Correo. Se puede especificar Dirección de respuesta diferente.
### Servidor smtp: smtp.gmail.com
###. Puerto: 587 (el 467 no funcionó)
### Usar conexion segura SSL
## En la opción de autenticación, colocar:
### Autenticación smtp
### Usuario con el dominio correspondiente. Debe coincidir con la Dirección de Correo colocado anteriormente, para que los servidores de correo no crean que es suplantación. Se puede utilizar la Dirección de respuesta.
### Contraseña
# Preparar una hoja de calculo con los datos. Ejemplo: Nombre, Correo, etc. Debe estar con extensión ODS y aunque dicen que se permiten 100 envíos diarios, en la práctica no son más de 80 cuando es a otros dominios y 90 cuando son al mismo dominio.
# Realiza un documento con el texto que irá como cuerpo del mensaje. No debe dejarse saltos de página.
# Agregar los campos a partir de la hoja de calculo como fuente de datos
# Combinar correspondencia
Quemar cd con multisesion
{{{
$ cdrecord  dev=/dev/cdrw -dao -multi -v -eject -data cddos.iso
}}}

Ejemplo:
{{{
mkisofs \
   -A "MECs Red-CTS" \
   -abstract info/abstract.txt \
   -copyright info/copyright.txt \
   -iso-level 3 \
   -J \
   -log-file ../mkisofs.log \
   -o ../MECs_Red-CTS_CDv2.iso \
   -p "Ulises Hernandez Pino, ulises@unicauca.edu.co" \
   -publisher "Universidad del Cauca, Popayán - Colombia" \
   -r \
   -sysid CDv3 \
   -T \
   .
}}}
   
   
Las Cuotas de Usuario o de Disco es un límite en el tamaño de almacenamiento que se le establece a los usuarios de un sistema GNU/Linux.

!1. Instalación
{{{
# apt-get install quota quotatool
}}}

!2. Configuración
Modificar los parámetros de montaje de la partición en la que se establecerán las cuotas, adicionando las opciones usrquota y grpquota en el archivo /etc/fstab. 
Ejemplos:
{{{
/dev/hdb2     /        ext3    defaults,errors=remount-ro,usrquota,grpquota  0 1
/dev/hda2/    /home    ext3    defaults,usrquota,grpquota                    1 2
}}}
Luego se deben re-montar las particiones o reiniciar el equipo.
Ejemplo tomando la primera opción:
{{{
# mount -a -o remount /
# mount -a -o remount /home
}}}
Se deben crear un conjunto de archivos en la raíz del punto de montaje de las particiones.
{{{
# quotacheck -F vfsv0 -vagumf
}}}
Chequear si las particiones soportan el sistemas de cuota.
{{{
# quotacheck -vagumf
}}}
Finalmente se activa el sistema de cuotas para cada una de las particiones configuradas.
Ejemplos:
{{{
# quotaon /
# quotaon /home
}}}
Si se desea desactivar el sistema de cuotas, en vez de quotaon se utiliza quotaoff.

!3. Configuración de cuotas de usuario
{{{
# quotatool -u usuario -bq 300M -l 600M /home
}}}
-u: indica la cuenta de usuario
-bq: cuota de gracias, es un límite pero que se puede sobrepasar por un tiempo no mayor a 7 días. Se sugiere que este sea el límite máximo que se le asigna a los usuarios.
-i: cuota absoluta, es el límite máximo que no se puede sobrepasar. Se sugiere que sea la 1.5 o 2 veces el límite de gracia.
/home: la partición en la que se establecerá la cuota

Para eliminar las cuotas de usuarios se debe colocar el valor de 0 tanto en la cuota de gracias como en la cuota absoluta.

Una forma de aplicar la misma configuración de cuotas a un rango de usuarios, a partir de uno ya configurado, es con el siguiente comando:
{{{
# edquota -p doctorado `awk -F: '$3 > 510 {print $1}' /etc/passwd`
}}}
En este ejemplo se aplicará las cuotas del usuario doctorado a todos los usuarios con ID superior a 510.




Los que te enseñamos a continuación son un total de 30 códigos que, como adelantábamos, dan acceso a opciones especiales, menús y opciones de configuración. Son todos códigos para teléfonos inteligentes Android y, no obstante, algunos de ellos podrían no funcionar en determinados modelos, o en según qué fabricantes.

Para introducirlos y hacer que funcionen, simplemente tenemos que ir a la aplicación teléfono y, en el teclado numérico de marcación, introducir la combinación que corresponda como si de una llamada de voz se tratase. Una vez introducido el código, sin necesidad de pulsar la tecla de llamada, veremos el resultado según la opción marcada.

Iniciar el sintetizador de voz
{{{
##8626337#
}}}
Servicio de seguimiento en Google Talk
{{{
*#*#8255#*#*
}}}
Iniciar el Test Mode o "Modo Seguro"
{{{
*#*#7262626#*#*
}}}
Dirección de la conexión Bluetooth
{{{
*#*#232337#*#
}}}
Prueba de hardware para el Bluetooth
{{{
*#*#232331#*#*
}}}
Mostrar información sobre la memoria RAM
{{{
*#*#3264#*#*
}}}
Prueba de hardware sobre el sensor de proximidad
{{{
*#*#0588#*#*
}}}
Prueba de hardware sobre el audio
{{{
*#*#0289#*#*
}}}
Prueba de hardware sobre la pantalla LCD
{{{
*#*#0*#*#*
}}}
Prueba (en detalle) del hardware del GPS
{{{
*#*#1575#*#*
}}}
Prueba rápida del hardware del GPS
{{{
*#*#1472365#*#*
}}}
Mostrar la dirección MAC de la conexión ~WiFi
{{{
*#*#232338#*#*
}}}
Código de apagado del terminal
{{{
*#*#7594#*#*
}}}
Restauración del terminal a los ajustes de fábrica (formateo de datos)
{{{
*2767*3855#
}}}
Restauración del terminal a los ajustes de fábrica (sin formateo de datos)
{{{
*#*#7780#*#*
}}}
Estado de bloqueo de la tarjeta SIM
{{{
*#7465625#
}}}
Menú de control de la cobertura de redes móviles
{{{
*#301279#
}}}
Modo de volcado del sistema
{{{
*#9900#
}}}
Información de diagnóstico del terminal
{{{
*#9090#
}}}
Información sobre el software y el hardware del equipo
{{{
*#12580*369#
}}}
Información sobre el firmware del equipo
{{{
*#*#1111#*#*
}}}
Prueba del hardware de la pantalla táctil
{{{
*#*#2664#*#*
}}}
Prueba del hardware de la vibración y retroiluminación
{{{
*#*#0842#*#*
}}}
Prueba del hardware de la conectividad ~WiFi
{{{
*#*#232339#*#*
}}}
Activación del modo de pruebas
{{{
*#*#197328640#*#*
}}}
Copia de seguridad de los archivos del usuario
{{{
*#*#273282*255*663282*#*#*
}}}
Detalles sobre el hardware de la cámara
{{{
*#*#34971539#*#*
}}}
Información del dispositivo, estadísticas de uso y batería
{{{
*#*#4636#*#*
}}}
Menú "servicio"
{{{
*#0*#
}}}
Número IMEI
{{{
*#06#
}}}
!Nokia
* Número de serie del teléfono: *#06#
* Información de servicio: *#92702689#


! Más información
* http://ezenlaweb.com/comunidad/archives/codigos-y-trucos-para-celulares
! Instalación y Configuración

1. Instalar el paquete: {{{dhcp3-server dhcpdump}}}

2. El servicio DHCP funciona en los puertos 67 y 68 de UDP, por tanto, si el computador tiene un firewall, hay que abrir estos puertos en la interfaz sobre la que va a trabajar.

3. Se debe configurar una IP estática en la interfaz correspondiente en {{{/etc/network/interfaces}}}. Por ejemplo:
{{{
auto eth1
    iface eth1 inet static
    address 192.168.123.111
    netmask 255.255.255.0
}}}

4. Configurar el Servidor DHCP para nuestra LAN en el archivo {{{/etc/dhcp3/dhcpd.conf}}}:
{{{
default-lease-time 7200;    # 2 Horas
max-lease-time 86400;       # 24 Horas
get-lease-hostnames false;

shared-network ieRed {
    subnet 192.168.123.20 netmask 255.255.255.0 {
        range 192.168.123.20 192.168.123.120;
        option subnet-mask 255.255.255.0;
        option routers 192.168.123.10;
        option broadcast-address 192.168.123.255;
        option domain-name-servers 192.168.123.10;
    }
    host servidor {
        hardware ethernet 1c:87:2c:b1:19:4d;
        fixed-address 192.168.123.111;
        server-name "www.iered.net";
    }
}
}}}

5. En el archivo {{{/etc/default/isc-dhcp-server}}} se especifica la interfaz de red a través de la cuál va a ofrecer el servicio:
{{{
INTERFACES="eth0"
}}}

6. Iniciar el servidor:
{{{
# /etc/init.d/isc-dhcp-server start
}}}


Más información
* http://www.bdat.net/dhcp/c33.html
* http://eltallerdelbit.com/servidor-dhcp-ubuntu-server
* http://help.ubuntu.com/community/isc-dhcp-server


! Monitoreo
1. Revisar el archivo: {{{more /var/lib/dhcp/dhcpd.leases}}}

2. Equipos en la red: 
{{{
$ nmap -v -sP 192.168.123.0/24
}}}

4. 
{{{
# dhcpdump -i eth0
}}}

Más información
* http://askubuntu.com/questions/265504/how-to-monitor-dhcp-leased-ip-address
* http://ask.xmodulo.com/monitor-dhcp-traffic-command-line-linux.html
Google Public DNS
* 8.8.8.8 y 8.8.4.4

DNS de Symantec (Norton): ''Protección seguridad''. Bloquea todos los sitios que alojan malware, sitios de phishing y sitios fraudulentos.
* 199.85.126.10 y 199.85.127.10
DNS de Symantec (Norton): ''Protección seguridad + Pornografía''. Además bloquea el acceso a sitios que contengan material sexualmente explícito.
* 199.85.126.20 y 199.85.127.20
DNS de Symantec (Norton): ''Protección seguridad + pornografía + familiar''. Bloquea el acceso a sitios que ofrecen contenido para adultos, aborto, alcohol, delincuencia, sectas, drogas, juego, odio, orientación sexual, suicidio, tabaco o violencia.
* 199.85.126.30 y 199.85.127.30

~OpenDNS Home Free: ''Customizable filtering and security''.
* 208.67.222.222, 208.67.220.220, 208.67.222.220, 208.67.220.222
~OpenDNS Family Shield: Pre-configured to ''block adult content''.
* 208.67.222.123, 208.67.220.123

DNS Telmex/Claro
* 190.157.8.33
* 190.157.8.1



[[Tags]]
1. Ver las versiones instaladas:
{{{
# dpkg --get-selections | grep linux-image
}}}
2. Desistalar las versiones antiguas:
{{{
# apt-get purge linux-image1 linux-image2 ...
}}}
! digg
Muestra la dirección ip de un dominio:
{{{
$ digg <dominio a consultar>
$ digg @<servidor-dns> <dominio a consultar>
}}}
Muestra la ruta de servidores que se consultan en una petición (trace):
{{{
$ digg <dominio a consultar> +trace
}}}
Muestra los servidores DNS de un dominio:
{{{
$ digg <dominio a consultar> NS
}}}
Muestra los servidores de correo de un dominio
{{{
$ digg <dominio a consultar> MX
}}}

Más información en:
* http://www.ignside.net/man/redes/dig.php

! host
Muestra todos los registros en el servidor DNS:
{{{
$ host -a <dominio a consultar>
$ host -a <dominio a consultar> <servidor-dns>
}}}

Más información:
* http://es.hscripts.com/tutoriales/linux-commands/host.html

! nslookup
! 1. Instalación
{{{
# apt-get install dovecot-imapd dovecot-common
}}}

! 2. Configuración básica (imap)
Editar el archivo /etc/dovecot/dovecot.conf
{{{
protocols = imap imaps
mail_location = mbox:~/mail:INBOX=/var/mail/%u
}}}
Antes de realizar la prueba se debe reiniciar el servicio. Prueba local con telnet (no sirve para acceso remoto porque contraseña se va en texto plano):
{{{
# /etc/init.d/dovecot restart
$ telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK Dovecot ready.
a login usuario contraseña
a OK Logged in.
}}}

! 3. Configuración con SSL (imaps)
Se requiere tener previamente creados los archivos cert y key. En este caso se utilizará los creados para el servicio de SMTP+SSL. Para ello se requiere editar el archivo: /etc/dovecot/dovecot.conf
{{{
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
ssl_disable = no
disable_plaintext_auth = no
}}}
Antes de realizar la prueba remota, se requiere reiniciar el servicio:
{{{
# /etc/init.d/dovecot restart
$ openssl s_client -connect polux.unicauca.edu.co:993
* OK Dovecot ready.

$ openssl s_client -connect polux.unicauca.edu.co:143 -starttls imap
OK Capability completed
}}}

Más información en:
* https://help.ubuntu.com/6.10/ubuntu/serverguide/es/email-services.html
* http://wiki.dovecot.org/BasicConfiguration
* http://wiki.dovecot.org/TestInstallation
! Instalación de drivers de ~EasyCAP en Ubuntu 11.04:
0. Se requiere tener instalado: linux-headers-2.6.xx-xx y mplayer
1. Descargar de http://sourceforge.net/projects/easycapdc60/files/ y descomprimir easycap_dc60.0.9.tar.gz
2. Ingresar al directorio y ejecutar como root el archivo {{{install.sh}}}
3. Se conecta la capturadora ~EasyCAP con una fuente de video conectada y transmitiendo. Se crea un flujo de video {{{/dev/video0}}} y de sonido {{{/proc/asound/EasyALSA0}}}.
4. Se prueba el correcto funcionamiento del driver ejecutando {{{testNTSC.sh}}} sin privilegios, los archivos de pruebas requieren que se tenga instalado mplayer.

Eso es todo, si se va a transmitir por Ustream, la cámara se detecta automáticamente como ~EasyCAP ~DC60 (~V4L2) y el sonido como easycap_alsa.

Más información:
* http://easycap.blogspot.com
* http://sourceforge.net/projects/easycapdc60/

! Problemas
{{{ERROR: missing /proc/asound/EasyALSA}}}
La solución es:
* Desconectar la tarjeta capturadora de video
* Volver a ejecutar el script {{{install.sh}}}
* Conectar la tarjeta capturadora de video
* Volver a ejecutar la prueba {{{testNTSC.sh}}}

Más información:
* http://ubuntuforums.org/showthread.php?t=924504&page=22 Post #215

Para la edición de video se requiere:

0. Tener claro para que se hace la grabación, que se pretende con ella, para de acuerdo con esto "planear" el tipo de tomas que es necesario realizar, las fotos y el audio.

1. Grabación:
* Webcam: no se recomienda por la baja calidad y pq no es adecuado para filmar exteriores o personas en movimiento.
* Camrecord: buena calidad si es en Video 8 o ~MiniDV.
* Camrecord o camaras de fotografía: mpeg calidad media

2. Importar al PC con Linux
* Por USB Stream no funciona, aunque si en windows.
* Por puerto IEEE 1394 (El cable depende de los conectores en Camara y PC). Muy Buena calidad. Además requiere programas para importar ¿Cuales?[1]
* Si graba como archivos mpeg, simplemente es copiarlos en el PC

3. Edición
* Depende de lo que lo que se quiere hacer. Habría que probar con Kino, Avidemux o Cinelerra. En windows se puede utilizar Virtual Dub y Avidemux.

5. Exportar
* Dependen del propósito: DVD (edición requiere mucho disco duro y quemador de DVD), VCD (menor tamaño, requiere quemador de CD y dependiendo del tiempo del video se puede obtener buenos resultados), archivo en PC (tamaño depende de calidad y tamaño), archivo para Internet (hay que buscar el balance adecuado entre tamaño y calidad).

[1] http://fmolinero.wordpress.com/2008/08/13/de-sony-handycam-a-pc-en-linux/
[2] http://www.ubuntu-es.org/node/16742




Un software alternativo es http://noosfero.org/

! Requerimientos técnicos [1]
* Módulos de apache2+
** mod_rewrite
** mod_php5
* ~MySQL 5+
* ~PHP5+, más las siguiente librerias
** GD (for graphics processing, eg user icon rescaling)
** JSON (for API functionality)
** Multibyte String support (for internationalisation): [libapache2-mod-php5]
{{{
 # apt-get install php5-gd libgd-ruby1.8 libgd-tools libgd-graph-perl python-gd php5-cgi php5-cli python-cjson libjson-ruby1.8
}}}

! Instalación
* Descargar el paquete del sitio de descargas de Elgg: http://www.elgg.org/downloads.php
* Copiar el archivo descargado al sitio de instalación (/var/www/) y renombrarlo.
* Crear la base de datos y el usuario.
* Cargar, en un navegador, la URL de la aplicación, el resto del proceso de instalación será guiado por la interfaz web, entre ellos crear el archivo .htaccess en el directorio de instalación y ajustar las opciones.

! Post-instalación
* El primer usuario que se crea al terminar la instalación es el administrador del sitio.
* Para habilitar los plugins, loguearse como administrador e ir a ''Administration'' > ''Tool Administration'' [3].

! Problemas y soluciones

!! Problemas con htaccess
Si en la instalación mediante la interfaz web, presenta el siguiente mensaje:
{{{
The requested URL /elgg/html/action/systemsettings/install was not found on this server
}}}
El problema se presenta porque Apache al intentar acceder al archivo .htaccess del directorio Elgg, no puede, por eso es necesario establecer la variable "~AllowOverride" a "All". Crear el archivo de configuración de apache ''/etc/apache2/conf.d/elgg.conf'':
{{{
<Directory "/var/www/elgg/">
   AllowOverride All
   Options None
   Order allow,deny
   Allow from all
 </Directory>
}}}
Reiniciar el servicio web.

!! Migración de instalación a otra URL
Para cambiar la URL de instalación de Elgg se requiere hacer los siguientes cambios[5]:

1. En el archivo .htaccess cambia el valor del parámetro ~RewriteBase

2. En la BD cambiar el valor de url en la tabla elggsites_entity

! Enlaces
[1] [[Technical requirements | http://community.elgg.org/pg/pages/view/18/]]
[2] [[Installation Elgg | http://community.elgg.org/pg/pages/view/24/]]
[3] [[Instalación y configuración de plugins | http://community.elgg.org/pg/pages/view/34/]]
[4] [[Tutorial Elgg | http://www.aprenderenred.net/ElggTutorial/breve_introduccin_a_elgg.html]]
[5] http://docs.elgg.org/wiki/Duplicate_Installation

En {{{Xubuntu 14.04}}}, al conectar y encender la impresora, la reconoció automáticamente.

En algunos foros en Internet, se indica que los drivers de la Epson Stylus C68 le sirve a los modelos C68, C79 y C92.
! nmap
Herramienta para escanear de forma rápida grandes redes de computadores. Con los paquetes IP determina los equipos, sistemas operativos, servicios que se encuentran en la red. Se instala con el paquete {{{nmap}}} y la interfaz gráfica con {{{zenmap}}}

{{{
# nmap -A -T4 192.168.0.1/24 (subred)
# nmap -sP 192.168.1.* (subred)
}}}
-A Detección de SO (análisis agresivo)
-T4 Rápida ejecución

{{{
# nmap -sS 192.168.1.99-110 (rango)
}}}
-sS Escaneo rápido y no intrusivo.

{{{
# zenmap
}}}
Abre interfaz gráfica como root.

Más información en:
* https://nmap.org/man/es/
* http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/

! arp-scan
Identificación de equipos en una red a través del protocolo arp. Se instala con el paquete {{{arp-scan}}}

Escaneo sobre una interfaz Inalámbrica con su red local:
{{{
# arp-scan -I wlan0 -l
-I o --interface
-l o --localnet
}}}

Escaneo sobre una interfaz Ethernet para un red específica:
{{{
# arp-scan -I eth0 192.168.0.0/24
}}}

Escaneo de un rango
{{{
# arp-scan -I eth0 192.168.1.3-192.168.1.27
}}}

Más información en:
* http://www.nta-monitor.com/wiki/index.php/Arp-scan_User_Guide

! fing 
Identificar los equipos conectados a la misma red:
{{{
# fing
}}}
Búsqueda de los equipos disponibles en una red específica:
{{{
# fing -n 192.168.1.0/24
}}}
Realización de ping a un equipo:
{{{
# fing -p 192.168.1.6
}}}
Revisión de los servicios disponibles en un equipo en particular:
{{{
# fing -s 192.168.1.6
}}}
Almacenamiento de los resultados en archivos independientes:
{{{
# fing -o log,text log,csv,log.csv
# fing -o log,text table,stext table,html,log.html
}}}
El paquete se descarga de: http://www.overlooksoft.com

! strobe
Escáner de puertos por consola. Viene en el paquete netdiag. 
Lista los comandos más utilizados y el número de veces segun la información del historial de bash:
{{{
$ history | awk '{print $2}' | awk 'BEGIN {FS="|"} {print $1}' | sort | uniq -c | sort -rn | head -10
}}}
Instalación en Xubuntu 1404
! Prerrequisitos
1. Instalar node.js
{{{
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
}}}

2. Instalación de paquetes adicionales
{{{
sudo apt-get install gzip curl python build-essential python-software-properties
}}}

! Instalación
1. Crear el directorio donde se va a instalar.
2. Descargar de: http://etherpad.org
3. Descomprimir
5. Si va a funcionar con un motor de base de datos, previamente debe estar creada. La información correspondiente en el archivo: {{{settings.json}}}
6. Ejecutar con el comando como usuario (no como root):
{{{
cd DIR-ETHERPAD/bin
./run.sh
}}}

Más información:
* https://help.ubuntu.com/community/Etherpad-liteInstallation
* https://wiki.ubuntu.com/Etherpad
* http://static.etherpad.org/plugins.html


Exim (~EXperimental Internet Mailer) es un agente de transporte de correo (Mail Transport Agent, usualmente MTA). Exim es el MTA por defecto en las distribuciones Debian GNU/Linux. Más información en: http://es.wikipedia.org/wiki/Exim

En una instalación de Debian por defecto, Exim se instala y configura como servidor de correo sólo para los procesos locales. Para que sirva como servidor de correo se debe seguir el siguiente proceso.

!1. Reconfiguración Básica de Exim
{{{
# dpkg-reconfigure exim4-config
}}}
* Configuración general: Internet Side
* Nombre del sistema de correo: polux.unicauca.edu.co (si este fuera el servidor de correo del dominio unicauca.edu.co, se colocaría este último nombre)
* Conexiones SMTP Entrantes: (en blanco para que acepte todas)
* Otros dominios locales: polux.unicauca.edu.co; localhost
* Dominios para los que reenvía correo: (en blanco para no permitir)
* Direcciones para los que reenvía correo: (en blanco para no permitir)
* Limite en el número de consultas de DNS: No (porque un servidor siempre esta conectado a Internet)
* Formato de entrega de correos: mbox (es el que espera la mayoría de aplicaciones)
* Dividir archivo de configuración: Si
Esta información es almacenada en el archivo, el cual se puede modificar manualmente:
{{{
# nano /etc/exim4/update-exim4.conf.conf
}}}
Después de hacer modificaciones en esta archivo se debe ejecutar el comando:
{{{
update-exim4.conf
}}}

!2. Verificación de Enrutamiento
{{{
$ exim4 -bt
> correo@dominio.algo (probar con direcciones de diferente tipo)
}}}
Si haciendo las pruebas desde unicauca, las direcciones de correo de otros servidores en unicauca producen el mensaje: //"all relevant MX records point to non-existent hosts"//, entonces se debe a que exim4 no permite el envío de correos a redes privadas. Para solucionar esto se deben eliminar el rango respectivo en el archivo:
{{{
# nano /etc/exim4/conf.d/router/200_exim4-config_primary
}}}
y luego ejecutar el comando:
{{{
update-exim4.conf
}}}

!3. Envío y recepción de correos de prueba

!!3.1 mensajes locales
{{{
$ echo "mensaje de prueba" | mail -s "prueba" cuentalocal
}}}

!!3.2 mensajes a servidores de correo remotos
{{{
echo "mensaje de prueba" | mail -s "prueba" cuentalocal@otro.dominio
}}}

!!3.3 mensajes a cualquier destino con información de depuración
{{{
$ exim4 -v correo@dominio.algo
}}}
{{{
opcionales: From:, To:
Subject: prueba
esta es una prueba
^D
}}}

!!3.4 Conexión a servidor remoto para envío de mensajes
Cuando un dominio, ip o rango de ip ha sido habilitado para reenvíos, desde estos equipos se puede realizar una conexión remota para enviar mensajes a cualquier cuenta de correo.
{{{
$ telnet polux.unicauca.edu.co 25
    220 polux.unicauca.edu.co ESMTP Exim 4.69 Fri, 30 Mar 2001 19:46:10 -0500
}}}
{{{
helo ulises
    250 polux.unicauca.edu.co Hello ulises [10.200.2.182]
mail from: ulises@micorreo.com (no es necesario que sea verdadero)
    250 OK
rcpt to: ulises@unicauca.edu.co
    250 Accepted
data
    354 Enter message, ending with "." on a line by itself
[mensaje]
.
    250 OK id=14j9dc-00020Q-8l
quit
}}}
Cuando un equipo no esta habilitado para reenvíos, la conexión remota sólo permite el envío de mensajes a las cuentas de correo del propio servidor.
{{{
helo ulises
    250 polux.unicauca.edu.co Hello atenea.unicauca.edu.co [10.200.1.129]
mail from: ulises@micorreo.com (no es necesario que sea verdadero)
    250 OK
rcpt to: ulises@iered.org (rechazo para reenvío)
    550 relay not permitted
rcpt to: doctorado@polux.unicauca.edu.co (aceptación a cuentas locales)
   250 Accepted
data
    354 Enter message, ending with "." on a line by itself
[mensaje]
.
    250 OK id=14j9dc-00020Q-8l
quit
}}}

Descripción más detallada de los diferentes parámetros que se pueden usar en esta prueba:

1. Saludar:
* ehlo tuNombre
* helo tuNombre
Cualquiera de estos dos comandos sirve para iniciar una sesión SMTP.

2. Escribir un mensaje:
* mail from: emilio@delRemite.nte
Así indicamos quién es el remitente. (''Como hacer para que valide esta información con las cuentas del servidor y solicite la contraseña'')
* rcpt to: emilio@delDestinata.rio
Así indicamos a quién va dirigido el correo.
* data
Después de este comando, empezamos a escribir el correo. Para terminar, escribimos un punto ( . ) en una línea aparte.

3. Añadir cabeceras:
Podemos añadir más cabeceras, como el nombre del remitente o del destinatario, pero esto es sólo sirve para los clientes de correo, al servidor no le importan en absoluto, así que van al principio del cuerpo del mensaje (es decir, después de empezar el mensaje con data).
* subject: elAsunto
Para indicar el subject o asunto del mensaje.
* from: miNombre <correo>
Para indicar que me llamo miNombre y mi correo electrónico es emilio@delRemite.nte.
* to: elNombreDelOtro <correo>
Para indicar que el correo va dirigido a elNombreDelOtro y su dirección de correo es emilio@delDestinata.rio.

Las direcciones de correo indicadas aquí no tienen por qué coincidir con las indicadas en el apartado 3. En cualquier caso, el que reciba el mensaje va a poder ver todas las cabeceras.

4. Cancelar:
* rset
Igual que en ~POP3, este comando sirve para cancelar cualquier cambio que se
     haya hecho durante la sesión.

5. Terminar la sesión:
* quit

!4. Otros comandos de Exim
* update-exim4.conf: Genera el archivo de configuración
* exim4 -bV: Verifica archivo de configuración
* exim4 -bp  o  mailq: muestra cola de correos
* exim4 -bpc: cuanta el número de correos en cola
* exim4 -d -M (id mensaje): fuerza entrega de un correo en cola y muestra detalles
* exim4 -d -all+route -M (id mensaje): fuerza entrega pero muestra solo info de enrutamiento
* exim4 -Mrm (id mensaje): borra correo de cola
* exim4 -bd: correo exim como un demonio, con -q(tiempo) reenvía correos en cola cada cierto tiempo, con -d corre en modo depuración

!5. Algunos scripts de utilidad
Borrar mensajes congelados (frozen) en la cola de correos:
{{{
# exim -bp | grep "*** frozen ***" | awk '{print "exim -Mrm", $3}'
}}}

!6. Cliente de correo por línea de comandos para el servidor
Cliente de correo por línea de comandos. Similar a pine, pero libre.
{{{
# apt-get install alpine
}}}
Si se quiere sobreescribir el dominio para las cuentas de correos (en el caso en que el nombre del servidor sea uno, pero el nombre del dominio del servicio de correo sea otro), se crea el archivo /etc/pine.conf y en el se define la variable:
{{{
user-domain=
}}}

Más información:
* http://www.developarts.com/2006/11/manejando-la-cola-de-mensajes/


Para saber donde esta el quemador
{{{
$ sudo umount /cdrom
$ cdrecord -scanbus
}}}

Para extraer la información de un CD y llevarla a un archivo ISO
{{{
$ cdrecord -v -eject speed=8 dev=1,0,0 fp06m.iso
}}}

Otra forma de crear una imagen de un CD
{{{
dd if=/dev/cdrom of=micd.iso
}}}

Crear una imagen de un diskette de arranque
{{{
$ dd if=/dev/fd0 of=boot.img bs=10k count=144
}}}

Referencia:
* http://www.linuxparatodos.net/geeklog/staticpages/index.php?page=como-cdrecord-mandato
* http://linuxcomandos.blogspot.com/2008/02/comando-dd.html
* http://www.chrysocome.net/rawwrite




Si se elimina el directorio /var/lin/dpkg/info el sistema queda sin saber cuales son los paquetes que están instalados, impidiendo que se pueda instalar o desinstalar paquetes. La solución es volver a generar esta información, y aunque los siguientes pasos no son los más adecuados, de momento es lo que me funciono:
# Capturar la salida de apt-get o dpkg para identificar los paquetes a los que se requiere reconstruir la información.
# Instalar estos paquetes en otra maquina que tenga el mismo sistema operativo. Otra opción es cargar un Live CD y hacer la instalación en el mismo equipo.
# Copiar los archivos *.list y *.md5sum al directorio /var/lin/dpkg/info 
FlatPress
Instalación versión 0909.1 (2010-01-28)

! Prerrequisitos
* [[Apache]] con módulos Rewrite
* Php

! Instalación
1. Descargar de http://sourceforge.net/projects/flatpress/files/
2. Descomprimir en un directorio que sea accesible a la web (requiere tener instalado el paquete bzip2)
{{{
$ tar xjf flatpress-0.909.1-arioso.tar.bz2
}}}
3. Permisos
{{{
# chgrp www-data -R fp-content
# chmod 775 -R fp-content
}}}
4. Cargar la página de inicio a través de un navegador y suministrar la información que se solicita.
5. Borrar
{{{
$ rm -fr Setup setup.php TESTING README CHANGELOG
}}}
6. Habilitar Plugin ~PrettyURLs, copiar texto y pegar en archivo .htaccess

! Configuración Lenguaje
1. Descargar de http://wiki.flatpress.org/res:language
2. Descomprimir en el directorio de instalación de ~FlatPress
3. Entrar al Panel de Administración, en el menú Options y cambiar la variable del Lenguaje.

! Temas
1. Descargar de http://wiki.flatpress.org/res:themes
2. Descomprimir en el directorio fp-interface/themes/
3. Entrar al Panel de Administración, en el menú Temas y escoger. Algunos Temas tienen diferentes Estilos para escoger.

! Plugins
* Entrada del Blog con una Fecha Diferente: http://wiki.flatpress.org/res:plugins:datechanger

! Más información
* http://www.flatpress.org
* http://wiki.flatpress.org
* http://themes.flatpress.org/
Creación y Envío Automático de Certificados de Eventos con footprint. Adaptación realizada a partir del artículo "Footprint: Gestor Certificados Digitales" de Jose Raúl Romero (GLUC): http://gluc.unicauca.edu.co/wiki/index.php/Footprint_Gestor_Cetificados_Digitales en un Ubuntu 7.04

! Preparación del Software
1. Instalación del JRE 1.6 para GNU/Linux.
{{{
# apt-get install sun-java6-jre
}}}

2. Descargar y descomprimir footprint de: https://footprint.dev.java.net/

3. Generación de un Certificado Digital para la Firma de los Documentos (Certificados de Asistencia)
{{{
$ keytool -genkey -alias <alias> -dname "cn=<Ente o Persona Responsable>, ou=<Dependencia si viene al caso>, o=<Entidad u Organización>, L=<Ciudad>, ST=<Departamento>, C=<Dos letras del país>" -keypass <Contraseña de la Llave Privada> -keystore <nombre del archivo que contendra el certificado> -storepass <Contraseña de acceso> -validity <Número de días para los que es valido el certificado>
}}}

Ejemplo:
{{{
keytool -genkey -alias RedCTS -dname "cn=Asociación Red CTS Cauca, ou=Red de Investigación Educativa - ieRed, o=Universidad del Cauca, L=Popayán, ST=Cauca, C=CO" -keypass mipassword -keystore RedCTS.keystore -storepass redcts -validity 500
}}}


! Preparación de los Certificados (Documentos)
Los archivos que se relacionan a continuación, deben estar contenidos en el directorio ./resources

1. Realizar una plantilla del Certificado (Documento) que se le dará a los asistentes del evento en ~OpenOffice2. Los campos del nombre, documento de identidad y otros, si se necesitan, debe crearse como "Campos de Texto, con la barra de "Campos de Control de Formularios". Debe tenerse especial cuidado con el nombre que se le asigna a estos campos, ya que esto se necesitará más adelante para relacionar la información de la lista de asistentes con esta plantilla. Una vez terminado el diseño, se debe exportar a PDF.

2. Escoger un archivo de imagen de tamaño pequeño, que sirva de enlace para acceder a la información de la firma digital.

3. Crear un archivo de texto en formato cvs, en donde la información que se necesita para un certificado de asistencia, este en una línea, separando cada dato (nombre, cédula, tipo de asistencia, etc.) con una coma y sin dejar espacios. El correo electrónico debe ser el último dato.

! Configuracion de footprint
La configuración de la aplicación se realiza en el archivo ./resources/configExample.xml, en la cual se deben considerar 4 aspectos:

1. La ruta y nombre de la plantilla del certificado de asistencia en PDF (documento).

2. La información del certificado digital para la firma del documento. Para esto se requiere: el alias, la ruta y nombre del archivo, la contraseña de acceso al archivo de llaves, la contraseña de la llave privada, un correo electrónico de contacto, la ciudad y el nombre del evento. Adicionalmente se requiere establecer la ubicación y tamaño del logo que representará el enlace a la información del la firma digital, para esto debe tenerse en cuenta las coordenadas empiezan en la esquina inferior izquierda.

3. La información del archivo en la que se encuentra el listado de asistentes, el nombre de los campos (que debe ser igual tanto en el archivo cvs como en los campos de texto de la plantilla) y el orden de los campos.

4. La información de la cuenta y el servidor de correo que se utilizará para enviar los certificados de asistencia. Además del mensaje que se enviará junto con cada archivo.

! Referencias
* http://java.sun.com/j2se/1.3/docs/tooldocs/win32/keytool.html
* http://www.programacion.com/java/tutorial/security1dot2/6/
* http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=app_keyt_jars

1. Instalar los paquetes: {{{libgtk2.0-0:i386}}}
2. Ejecutar: {{{sudo ./forticlientsslvpn}}}

Más información en: http://www.securityconfidence.com/blog/install-forticlient-ssl-vpn-x64-debian-based-linux/
Archivo: .forward
Contenido: example@domain.com
Frecuencia de accesos por IP:
{{{
# cat /var/log/apache2/access.log | awk '{print $1}' | sort | uniq -c | sort -n
}}}

Accesos a archivos PHP
{{{
# cat /var/log/apache2/access.log | awk '{print $7}' | sort | uniq -c | sort -n | grep php
}}}
1. Tener la webcam adecuadamente instalada.
2. Instalar el paquete freej con apt-get
3. Probar la entrada de video con freej
{{{
freej /dev/video0 -s 320x240 -T 6
}}}
-s tamaño 160x120 320x240 640x480, por defecto es 400x300
-T compresión

3. Probar el envió de stream con una cuenta en giss.tv
{{{
freej /dev/video0 -s 320x240 -T 24 -i http://giss.tv:8000/ulises.ogg -p xxxxx
}}}
Si no salen errores hay que presionar ctrl-w para que inicie la transmisión del streaming
-T : calidad del codec de video (Theora), va de 0 (menor calidad) a 63, por defecto es 16. Los fotogramas siempre serán 25.
-V : calidad del codec de audio (Vorbis), va de -1 (menor calidad) a 10, por defecto es 1, sin embargo en las pruebas realizadas no se encontró diferencia en la calidad de audio al variar estos valores. La frecuencia de muestreo siempre sera 44Khz.
-e nombrearchivo.ogg : Siempre que se envía un stream este se guarda en un archivo. por defecto el nombre es freej.ogg, pero uno puede especificarle el nombre con la opción. Si no se quiere guardar el archivo, se puede colocar como destino /dev/null 
-t : nombre del stream, por defecto es "Streaming with ~FreeJ"
-d : descripción del stream, por defecto es "Free the veejay in you"

-T 0 -V -1  : Stream 60 kbps,  620 KB/Min (muy pixelado)
-T 16 -V 1  : Stream 60 kbps,  670 KB/Min (pixelado)
-T 32 -V 6  : Stream 110 kbps, 930 KB/Min (Buena calidad)
-T 63 -V 10 : No lo soporta mi conexión a Internet (240 kbps)
-T 24 : Stream 60 kbps,  670 KB/Min (pixelado aceptable)

Más información en:
* http://www.slec.net/HacerStreamDeVideoConSoftwareyCodecsLibres?highlight=%28streaming%29



Emulador para dispositivos Android.

! Aplicación
1. Descargar de https://www.genymotion.com/#!/store
2. Instalar la aplicación:
{{{
# mv genymotion-2.1.0_x64.bin /opt
# cd /opt
# chmod +x genymotion-2.1.0_x64.bin
#./genymotion-2.1.0_x64.bin
# chown usuario.users -R genymotion
# chmod 755 -R genymotion
}}}
3. Ejecutar
{{{
$ /opt/genymotion/genymotion
}}}

! Instalación de Google Apps
1. Descargar el paquete según la versión de Android de
* http://androidxda.net/gapps/
* http://wiki.cyanogenmod.org/w/Google_Apps#Downloads
2. Abrir el emulador y luego arrastrar el archivo .zip sobre la ventana del dispositivo.
3. Reiniciar el emulador.

! Menú
1. Copiar el icono:
{{{
# cp /opt/genymotion/icons/icon.png /usr/share/icons/genymotion.png
}}}
2. Creación del menú
{{{
# nano /usr/share/applications/genymotion.desktop
}}}
Colocar el siguiente contenidos:
{{{
[Desktop Entry]
Name=Genymotion
Comment=Emulador de Dispositivos Android
Exec=/opt/genymotion/genymotion
Terminal=false
Type=Application
Icon=/usr/share/icons/genymotion.png
Categories=Emulator;Utility;
}}}

Más información en:
* http://hipertextual.com/archivo/2014/02/genymotion-emulador-android/
GetSimple is an open source CMS that utilizes the speed and convenience of XML, a best-in-class UI and the easiest learning curve of any simple Content Management System out there

! Prerrequisitos
* [[Apache]] con módulos Rewrite
* Php
* cURL, GD Library, ~SimpleXML

! Instalación
1. Descargar la aplicación de http://get-simple.info/ en el servidor y descomprimirlo en un directorio accesible desde la web
2. Establecer los siguientes permisos para que el usuario y el servidor web puedan escribir en los directorios de backup y data:
{{{
# chgrp www-data -R backups/ data/
# chmod 775 -R backups/ data/
}}}
3. Acceder al directorio admin/lang y descargar el paquete de idioma en español de: http://code.google.com/p/get-simple-language/
{{{
$ wget http://get-simple-language.googlecode.com/svn/trunk/es_ES.php
}}}
4. Acceder a la dirección web donde quedará la aplicación, verificar los prerrequisitos, escoger idioma español y para continuar con la instalación.
5. Definir el nombre del sitio, usuario del sitio y correo electrónico
6. Definir contraseña de administración
7. Configurar zona horaria

! ~Post-Configuración
* Crear las páginas que se requieran
* Ajustar el tema. No existen muchos temas, aunque son muy fáciles de adaptar.
*  Para activar las URL Amigables se requiere que Apache tenga habilitado en ese directorio:
{{{
AllowOverride All
}}}

! Más información
* http://get-simple.info/docs/installation
To get started with this blank ~TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the ~TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>

~WelcomeToTiddlyspot
1. Mirar la información de: http://desktop.google.com/linux/ y http://www.google.com/linuxrepositories/apt.html

2. Descargar archivo de firmas
{{{
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
}}}

3. Modificar el listado de repositorios en nano /etc/apt/sources.list
{{{
deb http://dl.google.com/linux/deb/ stable non-free
}}}

4. Instalar el programa
{{{
apt-get update
apt-get install google-desktop-linux 
}}}

5. Iniciar la primera vez
{{{
/opt/google/desktop/bin/gdlinux start
}}}

6. Personalizar la configuración



Esta página describe las pruebas de grabación de audio en un portatil Dell Latitude D620 con Ubuntu 7.04, utilizado como fuente de audio el micrófono interno y un micrófono externo. Los programas utilizados en estas pruebas de grabación se buscaron y se instalaron a través de los repositorios de Ubuntu (apt-get o synaptic)

! Audacity
* Es un excelente programa de captura y edición de audio.
* Graba y abre archivos .wav, .ogg y .mp3
* Se obtuvieron muy buenos resultados realizando capturas de voz con la siguiente configuración: mono, 22,050 Hz y 16 bits.

! Grabador de Sonidos de Gnome 
* Es el programa que viene por defecto con Gnome para la grabación de audio.
* Algunas opciones no funcionan adecuadamente, por ejemplo se cierra al intentar crear un nuevo archivo sin haber realizado una primera captura.
* Tiene unos perfiles predefinidos para la grabación de audio, uno de ellos es "Voz sin perdida" que graba los archivos.
* Los valores de gradación por defecto son: mono, 22,050 Hz y 16 bits.
* Después de un tiempo no volvió a funcionar
 
! ~QARecord y Krecord
 * No dieron buenos resultados, no vale la pena instalarlos
 
! Comentarios finales
* Para obtener los mejores resultados de captura de audio con el micrófono incorporado en los Dell D620, es necesario silenciar la reproducción de señal, y aumentar al máximo el volumen de captura.
* Siempre que se vaya a realizar una grabación, se debe revisar que la fuente de entrada en el "Control de Volumen de Gnome" corresponda con la fuente de audio que se va a utilizar. Esta vuelve a la configuración por defecto automáticamente.
* La captura del audio en .wav facilita la edición de la grabación en cualquier programa y conversión a otro formato, pero en contraposición requiere buen espacio en disco (Más o menos 3 MB por cada minuto de audio mono, con 22,050 Hz y 16 bits).
* El problema que fue recurrente al utilizar un micrófono interno fue el eco, y al utilizar un micrófono de diadema (Genius) el problema fue el bajo volumen, que al amplificarlo lo hizo junto con un ruido de fondo. Los mejores resultados se obtuvieron con el micrófono de mesa (Genius) aunque con volumen bajo. Haciendo nuevas pruebas, el mejor micrófono es el de la diadema de CPE Genius.



Borrar ~CD-RW
{{{
cdrecord -v blank=fast dev=/dev/scd0
}}}

Quemar ISO en CD (abre compartimiento después de grabado)
{{{
cdrecord -v -eject -format dev=/dev/scd0 ubuntu-9.10-desktop-i386.iso
}}}



Referencia
* http://www.linuxparatodos.net/portal/staticpages/index.php?page=como-cdrecord-mandato
* http://travesuras.wordpress.com/2009/06/20/20090620-1/
Es un lector RSS basado en web para instalar en un servidor y es open source. Es útil cuando se quiere tener un agregador de canales, pero que sea público. Más información en: http://gregarius.net/

! Instalación

1. Descargar y descomprimir el archivo de http://sourceforge.net/projects/gregarius/files/

2. Crear la base de datos y el usuario.

3. Copiar el archivo dbinit.php.sample en dbinit.php y modificarlo para suministrar la base de datos y usuario.

4. Cargar la página de inicio.

! Problemas
* Si aparece el error 500, seguramente es porque en las opciones de Apache hace falta establecer el siguiente parámetro: {{{AllowOverride All}}}
* Si aparece el error 440, seguramente es porque en el archivo .htaccess es necesario establecer el parámetro: {{{RewriteBase /gregarius/}}}

! Referencias
http://wiki.gregarius.net/index.php/Installation


~Hewlett-Packard tiene un amplio soporte para que la mayoría de sus impresoras funcionen en Linux. En la siguiente página puede encontrar la relación de las impresoras soportadas y el instalador para los drivers: http://hplipopensource.com

Algunas distribución como Ubuntu, tienen el instalador entre los paquetes de sus repositorios, pero en ocasiones, la versión de este paquete no soporta la impresora que se quiere instalar, así que se debe descargar uno más actualizado. En la siguiente dirección hay un asistente que permite determinar esto: http://hplipopensource.com/hplip-web/install_wizard/

Para el caso de la Impresora Multifuncional ''HP ~LaserJet Pro 400'' (M425dn), en Ubuntu/Lubuntu/Xubuntu 14.04 se tiene que descargar e instalar los drivers, siguiente los siguientes pasos:
# Descargar drivers de: http://hplipopensource.com/hplip-web/install/install/
# Ejecutar el instalador y contestar las preguntas (requiere conexión a Internet): {{{$ sh hplip-3.15.6.run}}}
# Conectar la impresora y terminar la configuración.









Aplicaciones (apps):
* ''~VidAnalysis free'': Graba video y analiza el movimiento, útil en laboratorios de física: https://play.google.com/store/apps/details?id=com.vidanalysis.free
* ''Lablet - Physics Sensor Lab'': Cámara para grabar y analizar movimiento; Micrófono para hacer análisis de ondas; Acelerometro para analizar la velocidad del móvil; entre otros: https://play.google.com/store/apps/details?id=nz.ac.auckland.lablet
* ''Physics Gizmo'': Registra datos: https://play.google.com/store/apps/details?id=com.brokenairplane.physicsGizmo
* ''~Lab4Physics'': Para realizar experimentos de física con el acelerómetro, el sonómetro y el rapidómetro

Software:
* ''Tracker'': Tracker is a free video analysis and modeling tool built on the Open Source Physics (OSP) Java framework. It is designed to be used in physics education: http://physlets.org/tracker/
Formas de obtener la información del harware de un equipo con Linux:

1. Consultando los siguientes archivos:
{{{
$ more /proc/cpuinfo
$ more /proc/meminfo
}}}

1. Con el comando {{{lshw}}}.

2. Con el paquete {{{sysinfo}}} que se debe instalar.

3. Con el paquete {{{hardinfo}}} que se debe instalar. Es el más completo.

Insertar el CD o la Memoria USB de instalación de Ubuntu en el Equipo. Se sugiere que previamente ingrese en modo ~LiveCD para verificar posibles problemas con el entorno gráfico, la red y para ajustar las particiones. En el proceso de instalación:
# Instalar codecs privativos.
# Confirmar distribución del teclado: 
## Si tiene la tecla ç (Español)
## Si no la tiene (Latinoamericano)
# Editar manualmente la tabla de particiones. Crear al menos dos particiones en el espacio libre del disco: una partición ~EXT4 el directorio Raíz y una partición de tipo SWAP para la memoria de intercambio. En lo posible crear otra participación ~EXT4 para almacenar archivos y documentos, pero no montarla como directorio {{{home}}} para evitar que allí se guarden los archivos de configuración de los programas.
## Para la SWAP: Mayor o Igual a 4 GB MB de RAM = El valor de la RAM; Menor de 4 GB de RAM = Se coloca el doble de la RAM
## Para el Root (o Directorio Raíz) como mínimo se sugiere 20 GB
# No cifrar la información del usuario. Si desea proteger la información, es mejor cifrar los directorios manualmente.

Cuando ingresa la primera vez, configurar la red con el Network Manager
# Si es inalámbrica se debe escoger y suministrar la contraseña de acceso.
# Si es alambrada:
## Con el servicio de DHCP, no hay necesidad de hacer nada más.
## Para configuración manual, se deben suministrar los datos haciendo clic derecho y escoger la opción de educación de conexiones.
# Si esta dentro de una red institucional u organizacional, es posible que deba configurar el acceso a internet a través de un servidor proxy. Esta configuración se debe hacer desde los navegadores que utilice.

Adicionalmente hacer:
# Habilitar todos los repositorios en {{{/etc/apt/source.list}}} y deshabilitar la descarga de fuentes para disminuir tiempo durante las actualizaciones de los catálogos.
# Entrar al {{{Soporte de idiomas}}} para instalar los paquetes que se requieran.

Lubuntu es la distribución basada en Ubuntu con el entorno de escritorio más liviano de todos: LXDE. El diseño de este entorno de escritorio recuerda a Windows XP, lo que puede favorecer a las personas que están acostumbradas a trabajar con Windows.

Lubuntu 14.04 se escogió para:
* Implementar el Servidor Portable de ieRed, debido a que esta basado en Ubuntu, lo que asegura un buen reconocimiento de hardware, y al mismo tiempo maneja el entorno de escritorio más liviano de todos.
* Instalar los equipos de escritorio de VAU, debido a su similitud con Windows.


! 1. Instalación Sistema Operativo
Instalación de Lubuntu 14.04. Es la distribución más liviana de Ubuntu.
* [[Preinstalación Linux]]
* [[Instalación Base Ubuntu]]


! 2. Instalación y Configuración de Programas Adicionales
!!! Para liberar espacio se desinstalo:
* Ofimática: abiword* gnumeric* 
* Internet: pidgin* sylpheed* xterm
* Gráficos: simple-scan

!!! Instalar aplicaciones adicionales
* Ofimática: libreoffice libreoffice-l10n-es libreoffice-help-es fbreader pdfmod pdftk cups-pdf
* Multimedia: vlc gimp inkscape audacity 
* Utilidad: gnome-screenshot gnome-system-monitor ecryptfs-utils lubuntu-restricted-extras icedtea-plugin p7zip-full p7zip-rar rar unrar sysv-rc-conf faad ffmpeg2theora mencoder lame imagemagick arandr

!!! Para ver DVD / CD con cifrado CSS
# Instalar: ubuntu-restricted-extras y curl
# Descargar e instalar la llave pública de los repositorios de Videolan: {{{curl ftp://ftp.videolan.org/pub/debian/videolan-apt.asc | sudo apt-key add -}}}
# Añadir los repositorios de Videolan: {{{echo "deb ftp://ftp.videolan.org/pub/debian/stable ./" | sudo tee /etc/apt/sources.list.d/libdvdcss.list}}}
# Actualizar e instalar: {{{sudo apt-get update; sudo apt-get install libdvdcss2}}}
# Ejecutar: {{{sudo /usr/share/doc/libdvdread4/install-css.sh}}}

!!! En navegadores
* Deshabilitar guardado de contraseña.
* En Chrome quitar pantalla inicial de ingreso de usuario
* Instalación y configuración de diccionario en español
* Verificar el funcionamiento del Plugin de Flash en Firefox y Chrome.
* Verificar el funcionamiento del Plugin de Java en Firefox (Ya no funciona en las últimas versiones de Chrome)

!!! Complementos para Firefox
* ~TiddlyFox (Para utilizar archivos de ~TiddlyWiki): https://addons.mozilla.org/en-us/firefox/addon/tiddlyfox/

!!! Instalación de tipos de letra adicionales (Por ejemplo Calibre)
* Colocar los archivos ttf en: {{{/usr/share/fonts}}}

!!! Combinación de teclas para manejo de ventanas
* https://help.ubuntu.com/community/Lubuntu/Keyboard
* Esto se configura en {{{~/.config/openbox/lubuntu-rc.xml}}}

!!! Active el teclado numérico automáticamente
* Instalar el paquete: {{{numlockx}}}

!!! Anotaciones:
* {{{ffmpeg}}} se descontinuó en Ubuntu 14.04. Ahora se instala {{{libav-tools}}}. Tutorial de comandos en: http://libav.org/avconv.html

!!! Instalación de Impresoras
* [[Lexmark z515 en Linux]]
* [[HP en Linux]]
* [[Samsung en Linux]]


! 3. Resolución de problemas
!!! SSH Server
* Instalar openssh-server
Si se presenta problemas con la instalación de {{{openssh-server}}} debido a que la dependencia del paquete openssh-client. La solución es borrar este último paquete e instalar {{{openssh-server}}}, al hacer esto, se instala la versión de openssh-client que se requiere.
* Colocar contraseña al root.
* Habilitar acceso root por ssh en {{{/etc/ssh/sshd_config}}}

!!! En equipos de escritorio no aparece el control de volumen
Al ingresar a {{{alsamixer}}} aparece dos sistemas de sonido, pero por defecto HDA HDMI. La solución es instalar la aplicación {{{pavucontrol}}} y deshabilitar el perfil HDMI.

! 1. Instalación Sistema Operativo
* [[Preinstalación Linux]]
* [[Instalación Base Ubuntu]]

! 2. Instalación y Configuración de Programas Adicionales
Los paquetes que se listan a continuación, se pueden instalar desde Synaptic o por línea de comandos con apt-get install:

!!! Utilidades
* ''chromium arora'': navegadores web alternativos.
* ''vlc'': reproductores multimedia. amarok o banshee puede ser un remplazo de rhythmbox, xmms que esta descontinuado.
* ''k3b udftools asunder'': quemador y extractor de CD
* ''gimp dia inkscape scribus'': programas para diseño gráfico.
* ''freemind freeplane'': mapas mentales
* ''wine gnome-exe-thumbnailer'': sistema para correr aplicaciones de windows.
* ''xchat'': cliente de IRC pero no funciona detrás de un proxy.
* ''ekiga'': cliente de voip.
* ''skype'': cliente llamadas voip.
* ''empathy'': cliente de mensajería instantánea.
* ''gwibber'': cliente microblogging.
* ''kompozer'': creación de páginas web.
* ''audacity'': editor de audio.
* ''cheese guvcview'': aplicación y drivers para las webcams.
* ''thunderbird'': cliente de correo electrónico.
* ''nautilus-image-converter nautilus-open-terminal nautilus-script-audio-convert nautilus-gtkhash'': plugins para el explorador de archivos.
* ''samba, smbfs, system-config-samba'': compartir recursos a través de la red de windows.
* ''seahorse-nautilus'': complemento para cifrar y desencriptar información con GPG en gedit y nautilus
* ''clamav nautilus-clamscan'': antivirus
* ''openclipart-openoffice.org'': galería de imágenes para ~OpenOffice.
* ''vino vinagre'': vnc para gnome.
* ''xpad'': notas adhesivas en escritorio
* ''sysv-rc-conf'': administración de servicios que se inician con el sistema.
* ''openssh-server sshfs'': acceso a shell de forma segura.
* ''cups-pdf pdftk pdfedit pdfchain pdfmod'': impresora virtual y herramientas para PDF.
* ''zip unzip rar unrar p7zip-full p7zip-rar'': algoritmos de compresión.
* ''myspell-es myspell-en-gb aspell-es aspell-en wspanish wamerican goldendict dict-freedict-eng-spa dict-freedict-spa-eng'': diccionario en español y traductor.
* ''sun-java6-jdk sun-java6-plugin'': maquina virtual de java y plugin para los navegadores.
* ''ubuntu-restricted-extras kubuntu-restricted-extras faad ffmpeg ffmpeg2theora mencoder lame'': codecs de audio y video, librerías y fuentes de letra para soportar formatos privativos.
* ''build-essential'': herramientas para la compilación de programas.
* ''hplip'': administrador de impresoras hewlett packard
* ''ttf-mscorefonts-installer ttf-xfree86-nonfree ttf-ubuntu-title'': instalación fuentes adicionales

Utilidasdes
* mtr iperf iptraf pkstat tcptrack nmap dstat aircrack
Software Educativo
* gcompris tuxpaint tuxtype tuxmath kturtle childsplay tuxguitar
* kmplot drgeo geogebra celestia stellarium scratch etoy step
* phun
Herramientas de Autor
* jclic
Juegos
* smc smc-music

!!! libdvdcss2
Con el paquete libdvdread4 previamente instalado, ejecute el script /usr/share/doc/libdvdread4/install-css.sh para descargar e instalar el paquete libdvdcss.deb. Este paquete permite reproducir los DVD con encriptación. 

!!! Samba
* Editar el archivo /etc/samba/smb.conf
** Configuración General
{{{
   workgroup = (grupo de trabajo)
   server string = (nombre equipo) con Ubuntu
   security = user
}}}
** Configuración del Directorio de Usuario
{{{
   comment = Home Directories
   browseable = no
   read only = no
}}}
** Configuración de Directorio Común
{{{
[documentos]
  path = /media/winxp/documentos
  valid users = ulises, doctorado
  available = yes
  browseable = yes
  public = yes
  writable = yes
  create mask = 0755
}}}
Finalmente se debe reiniciar el servicio:
{{{
# /etc/init.d/samba restart
}}}
* También se puede realizar la configuración en modo gráfico utilizando system-config-samba

!!! Firefox
Instalación de los siguientes add-ons:
* Spanish Dictionary 
* Video ~DownloadHelper
* ~FlashGot
Instalación de los siguientes plugins:
* Adobe Reader: descargar de http://get.adobe.com/reader/ e instalar por línea de comandos
Aspectos básicos de configuración:
* Lenguaje
** Menu: Editar -> Preferencias -> Pestaña avanzadas -> Pestaña General -> Editar idiomas
** Adicionar y colocar en el siguiente orden: Español/Colombia [co-es], Español [es], Inglés [en]
* Página de Inicio
** Menu: Editar -> Preferencias -> Pestaña General
** Dirección: (la que corresponda) o escoger cargar página en blanco
* No Guardar Contraseñas
** Menu: Editar -> Preferencias -> Pestaña Privacidad -> Pestaña Contraseñas
** Desmarcar: Recordar contraseñas
* Descarga de Archivos
** Menu: Editar -> Preferencias -> Descargas
** Seleccionar: Preguntarme donde guardar cada archivo
** Marcar: Cerrar el administrador de descargas cuando comience una descarga
* Quitar Marcadores o Bookmark
** Menu: Ver -> Barra de herramientas -> Barra de marcadores

!!! Audacity
* Con los codec que se instala, ya queda con soporte para mp3
* Se debe configurar para otros soportes como wma a través de ffmpeg

!!! Freemind
* Ubuntu 10.04: No instalar el paquete que viene en los repositorios de ubuntu porque esta desactualizado. Instalar el paquete freemind_0.9.0RC4-0ubuntu1_all.deb que se puede descargar de: https://answers.launchpad.net/ubuntu/+question/87739
* Ubuntu 11.04 y 13.04: se puede instalar el que viene en los repositorios que es la última estable.

!!! ~CmapTools
* Descargar el programa de http://cmap.ihmc.us/download/ e instalarlo por línea de comandos.
* Para que aparezca en el menú Aplicaciones, se debe crear el archivo /usr/share/applications/cmaptools.desktop:
{{{
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=CmapTools
Comment=Mapas Conceptuales
Exec=/opt/CmapTools/CmapTools
Terminal=false
Icon=/usr/share/pixmaps/cmaptools.png
Type=Application
MimeType=application/x-cmaptools
Categories=Office;
GenericName=CmapTools
Comment=Mapas Conceptuales
}}}
* Para que el directorio de logs no quede a la vista, se puede renombrar el directorio y luego cambiar la configuración en el archivo bin/cmaptools.cfg

!!! VUE
* Descargar la última versión de http://vue.tufts.edu/download/
* Descomprimir y ubicar el archivo .jar en /opt
* Para que aparezca en el menú Aplicaciones, se debe crear el archivo /usr/share/applications/vue.desktop:
{{{
Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=VUE
GenericName=VUE
Comment=Mapas Conceptuales
Exec=/usr/lib/jvm/java-6-sun-1.6.0.15/bin/java -jar /opt/vue/VUE.jar
Terminal=false
Type=Application
Categories=Office;
Icon=/usr/share/pixmaps/vue.png
}}}

!!! Pidgin
* Las cuentas de MSN y Google funcionan a través de un proxy, pero Yahoo e IRC no.
* No se recomienda el uso de Kopete porque no toma la configuración del proxy de Gnome.
* No se recomienda el uso de emesene porque no permite autenticar.
* Para que el corrector ortográfico funcione con un idioma diferente al que se tiene por defecto, se requiere tener instalado aspell-es y cambiar el acceso directo a:
{{{
bash -c 'LANG="es" pidgin'
}}}

!!! Skype
* Para que funcione el video con una webcam se requiere hacer los siguiente (en Ubuntu 10.04 con Webcams externas):
** Entrar a Sistema -> Preferencias -> Selector Multimedia -> Video
** Escoger ~V4L (por defecto se encuentra ~V4L2)
** Modificar el acceso directo, con la siguiente línea: 
{{{
bash -c 'LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype'
}}}

* Para que funcione el micrófono se debe hacer lo siguiente (en Ubuntu 13.04):
** Adicionar en el archivo {{{/etc/pulse/client.conf}}} cambiar el parámetro {{{autospawn}}} de {{{yes}}} a {{{no}}} y habilitar (descomentar).
** Matar el servicio de pulseaudio: {{{pulseaudio --kill}}}
** Abrir {{{alsamixer}}} y ajustar los niveles de la sección {{{capture}}} (a la que se accede precionando tab). El nivel de la opción {{{Digital}}} debe ser diferente de 0.
** Abrir Skype
** Después de utilizar Skype, se recomienda volver a correr el servicio de pulseaudio: {{{pulseaudio --start}}}

!!! eXelearning
Existen dos opciones de descarga de http://sourceforge.net/projects/exe/files/
* La versión portable que funciona sin necesidad de instalación en windows y en linux con wine
* La versión para Ubuntu

!!! Xchat
Para que cargue el chat con el diccionario en español, si el sistema esta en ingles, deben estar los paquetes de idioma previamente instalados, y luego, modificar el menú con la siguiente línea de comando:
{{{
bash -c 'LANGUAGE=es xchat'
}}}

!!! Wuala, Ekiga, Istanbul
Para que aparezca el ícono en la barra del sistema en Ubuntu 11.04, hay que hacer lo siguiente:
{{{
$ gsettings get com.canonical.Unity.Panel systray-whitelist
}}}
Con el resultado se genera el siguiente comando:
{{{
$ gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Mumble', 'Wine', 'Skype', 'hp-systray', 'scp-dbus-service', 'Wuala', 'ekiga', 'xchat', 'Xchat', 'amule', 'aMule', 'istanbul']"
$ unity --replace & (recarga interface)
}}}
Para que en el arranque, Wuala inicio de forma minimizada, se debe crear en el menú de arranque, una entrada de la siguiente forma:
{{{
wuala -silent
}}}
Más información en:
* https://forum.wuala.com/viewtopic.php?f=16&t=1549
* https://bugs.launchpad.net/ubuntu/+source/ekiga/+bug/801525

!!! ~LibreOffice
* Interface y diccionario en Español
{{{
# apt-get install libreoffice-l10n-common libreoffice-l10n-es libreoffice-help-es language-support-writing-es
}}}
* Thesaurus en Español: http://openthes-es.berlios.de
* Corrector gramatical: http://languagetool.org
* ~Writer2ePub: http://extensions.services.openoffice.org/node/4615
Más información en:
* http://hablemostux.blogspot.com/2011/06/corrector-gramatical-y-diccionario-de.html
* http://foro-ubuntu-guia.963965.n3.nabble.com/Utilizar-fuentes-de-Windows-en-Libreoffice-Solucionado-td3061507.html

!!! VirtualBox
Descargar la última versión de: http://www.virtualbox.org/wiki/Linux_Downloads

!!! Synkron
* Descargar ultima versión de: http://synkron.sourceforge.net
* Instalar los siguientes paquetes:
{{{
# apt-get install libqt4-dev
}}}
Se compila de la siguiente manera (hay un ligero cambio respecto a lo que indica el archivo install.txt):
{{{
# lrelease Synkron.pro
# qmake-qt4 Synkron.pro
# make
}}}
Más información en: http://crontab.wordpress.com/2010/12/02/instalar-synkron-en-linux/

!!! Cambiar aspecto GDM
Abrir el terminal y ejecutar el siguiente comando
{{{
$ sudo cp /usr/share/applications/gnome-appearance-properties.desktop /usr/share/gdm/autostart/LoginWindow 
}}}
Cerrar la sesión y esperar a que aparezca una ventana de configuración para hacer cambios en la imagen de fondo, los colores, iconos, etc. Luego se cierra la ventana y se ingresa nuevamente.
{{{
sudo unlink /usr/share/gdm/autostart/LoginWindow/gnome-appearance-properties.desktop
}}}
Más información:
* http://sliceoflinux.com/2010/05/20/cambiar-el-aspecto-de-la-pantalla-de-identificacion-en-ubuntu-10-04-lucid-linx/

!!! Colores Grub
Modificar el archivo /etc/grub.d/05_debian_theme para cambiar los colores del GRUB.
{{{
  set color_normal=brown/black           
  set color_highlight=white/black  
}}}
Para realizar otro tipo de cambios, consultar: http://members.iinet.net/~herman546/p20/GRUB2%20Splashimages.html
Al finalizar se debe ejecutar el siguiente comando:
{{{
# grub-mkconfig -o /boot/grub/grub.cfg
}}}

!!! Arranque diferente al que se tiene por defecto
Mirar en el archivo /boot/grub/grub.cfg el nombre con el que se denomina el inicio en el menú de Grub, copiarlo y pegarlo entre comillas en el parámetro ~GRUB_DEFAULT= del archivo /etc/default/grub. Luego actualizar el Grub:
{{{
# update-grub
}}}

!!! Desistalar versiones antiguas del kernel
{{{
# dpkg --get-selections | grep linux-image
# apt-get purge linux-image1 linux-image2 ...
}}}

!!! Servicios de Inicio con sysv-rc-conf
* Niveles de arranque (runlevel) del sistema:
** 0 - Modo que inicia el apagado del sistema, se invoca después de bajar todos los servicios (runlevel 6) y desmontar todas los dispositivos.
** 1 - Modo simple, sólo se puede trabajar en una consola y no carga componentes de redes o entornos gráficos.
** 2 - Modo Multiusuario y en red.
** 3 - Modo de arranque por defecto y en red.
** 4 - No usado
** 5 - Modo de uso de entornos gráficos.
** 6 - Modo para bajar servicios, desmontar dispositivos y reiniciar o apagar el sistema.
* Para habilitar un servicio debe marcarse los modos 2 a 5 y para des-habilitar deben des-marcarse los modos 1 a 5.

!!! Cambiar el Administrador de Ventanas
En entorno gráfico ejecutar {{{gconf-editor}}} y escribir palabra clave de acuerdo con los Administradores de Ventana que se tengan instalados:
* gnome-shell (paquete gnome-shell)
* gnome-wm (paquete ubuntu-desktop o gnome)
* metacy (paquete ubuntu-netbook o unity)

Más información en:
* http://www.taringa.net/posts/linux/7742728/Instalar-Gnome-Shell-y-Ubuntu-Unity-en-Ubuntu-10_10.html
* http://www.portalubuntu.com/2010/11/instalar-gnome-shell-y-unity-en-ubuntu.html

!!! Personalización de Gnome Desktop
Para aprovechar mejor el espacio de pantalla en netbooks, se puede hacer lo siguiente:
* Eliminar el panel inferior.
* Remplazar el applet "Barra de menús" por "Menú Principal" para que el acceso a todos los menús sea sólo a través de un icono.
* Instalar "window-picker-applet" y agregar el applet "Selector de ventanas" en la barra superior para que las aplicaciones abiertas se muestren como icono.

Más información en:
* http://ubunlog.com/optimizar-ubuntu-10-04-en-tu-netbook/

!!! Montar una partición automáticamente
Con el comando {{{blkid}}} (como root) se obtiene el UUID de las particiones, y con esta información se modifica el archivo {{{/etc/fstab}}}:
{{{
# swap was on /dev/sda5 during installation
UUID=8e9b55f0-addf-4f95-9759-e3066c452429 none            swap      sw                0       0

# / was on /dev/sda6 during installation
UUID=ffbd96cb-cdf6-42d2-8fad-96ef03c849ab /               ext4      errors=remount-ro 0       1

# /dev/sda7
UUID=0db2ca11-ed3b-498e-afa8-73ccde12223e /media/file     ext4      defaults          0       0

# /dev/sda3
UUID=18B4B7BBB4B799A8                     /media/OS       ntfs-3g   defaults          0       0
}}}


! 3. Resolución de Problemas

!!! Mensaje "vga=XXX is deprecated" después del GRUB (Ubuntu 9.10)
Si en el arranque aparece un mensaje de error que indica "vga=XXX is deprecated", es porque en algún procedimiento se agrego este valor en el parámetro ~GRUB_CMDLINE_LINUX en el archivo /etc/default/grub. La solución es deja este parámetro de la siguiente manera:
{{{
GRUB_CMDLINE_LINUX="splash"
}}}

!!! Problema con Freej (Ubuntu 9.10 y 10.04)
No carga webcams con video4linux (v4l) o video4linux2 (v4l2)
Falta arreglar...
http://www.ecualug.org/2009/10/09/blog/razametal/habilitar_el_soporte_para_webcams_en_freej_010
http://lists.dyne.org/lurker/message/20090704.110553.b8b19a49.es.html

!!! Problema con ffmepg y ffplay (Ubuntu 10.04)
Cargar previamente la librería v4l1compat.so:
{{{
$ export LD_PRELOAD="/usr/lib/libv4l/v4l1compat.so"
$ ffplay -s 320x240 -f video4linux2 /dev/video0
}}}

!!! Problema con Istanbul (Ubuntu 9.10 y 10.04)
Saltos y recortes en la grabación de video
Bloqueo cuando se graba audio

!!! Microfono no graba (Ubuntu 10.10 en Acer Aspire ONE)
La solución es instalar el control de volumen {{{pavucontrol}}} y bajarle el volumen a uno de los micrófonos.

!!! Duración de Batería (Ubuntu 11.04)
Con Ubuntu 11.04 la batería dura 2 horas y Windows 7 dura 2.5 horas. Los cambios hechos en Ubuntu fueron:
{{{
# apt-get install laptop-mode-tools cpufrequtils cpufreqd
}}}
Además agregar en /etc/sysctl.conf 
{{{
vm.swappiness=10
}}}
Mirar consumo de energía y seguir recomendaciones: 
{{{
# powertop
}}}
Adicionar el siguiente parámetro en el /etc/default/grub
{{{
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash pcie_aspm=force”
# sudo update-grub
}}}
Más información:
* http://www.howtogeek.com/55185/how-to-maximize-the-battery-life-on-your-linux-laptop/
* http://laexperienciaubuntu.blogspot.com/2010/12/aumentar-duracion-de-la-bateria-en.html
* http://hotfixed.net/2011/05/16/optimizar-la-duracion-de-la-bateria-en-linux/
* http://www.edulibre.info/mejorar-el-rendimiento-de-la

!!! Cambiar Contraseña Anillo de Claves
Menú Accessories > Password and Encryption Keys

!!! El disco duro del portátil suena frecuentemente
Desde hace unos días, escucho que el disco duro emite sonidos frecuentemente, al parecer por los ciclos de descanso y reinicio del cabezote del disco para ahorrar batería. Algunos artículos interesantes que he encontrado al respecto, son:
* http://www.vicente-navarro.com/blog/2007/10/28/linux-no-mata-discos-duros-se-mueren-solos/
* http://www.vicente-navarro.com/blog/2008/01/01/a-vueltas-con-el-hdparm-b-en-debian-lenny/
* http://www.rolandovera.com/2008/11/05/sintomas-para-saber-que-un-disco-duro-esta-malo/
Para realizar un diagnostico, en mi caso en un portátil con Ubuntu 11.04 al que le he instalado {{{laptop-mode-tools}}} para optimizar el consumo de energía, realice medidas del número de ciclos de carga del disco duro, con una diferencia de 10 minutos, con el comando {{{smartctl -a /dev/sda | egrep 'ID|Load_Cycle'}}}. Los resultados fueron:
* Usando batería: 
* Conectado a la red eléctrica:
El comando utilizado para contar el número de ciclos (previamente se tuvo que instalar el paquete {{{smartmontools}}}), fue:
{{{
# smartctl -a /dev/sda | egrep 'ID|Load_Cycle'
}}}
Así que considero que la opción es cambiar el parámetro {{{BATT_HD_POWERMGMT}}} de 1 a 128 del archivo {{{/etc/laptop-mode/laptop-mode.conf}}}.

Más información en:
* http://www.ubuntu-es.org/node/133170

!!! Icon Tray 
Ubuntu 11.04: Obtener la lista de iconos de sistema permitidos con:
{{{
$ gsettings get com.canonical.Unity.Panel systray-whitelist
['Wine', 'Skype', 'hp-systray', 'Wuala', 'ekiga']
}}}
Luego crear el siguiente comando, agregando los
{{{
$ gsettings set com.canonical.Unity.Panel systray-whitelist "['Wine', 'Skype', 'hp-systray', 'Wuala', 'ekiga', 'xchat', 'Xchat']"
}}}
Se puede habilitar todos los indicadores con:
{{{
$ gsettings set com.canonical.Unity.Panel systray-whitelist "['all']"
}}}
Ubuntu 13.04: Se debe instalar un paquete especial porque este sistema de notificación fue eliminado
{{{
#apt-add-repository ppa:timekiller/unity-systrayfix
#apt-get update
#apt-get upgrade
}}}
Luego hay que agregar los iconos como en Ubuntu 11.04

!!! Cambiar contraseña de root
1. En el Grub seleccionar la opción de ingreso y presionar la {{{tecla e}}}.
2. Luego escoger la opción que inicia con "kernel" y presionar la {{{tecla e}}}.
3. Agregar al final {{{init=/bin/sh}}} y presionar la {{{tecla Esc}}}
4. Presionar la {{{tecla b}}}
Una vez se ingresa se cambia la contraseña de root y se reinicia el equipo.
Más información en: http://rm-rf.es/restaurar-clave-de-root-en-debian/

!!! Contraseñas simples
Para que el sistema permita colocar contraseñas simples, se debe modificar el archivo {{{/etc/pam.d/common-password}}} y quitar la opción {{{obscure}}} del parámetro {{{password required}}}

Xubuntu es una distribución basada en Ubuntu con el entorno de escritorio XFCE, el cuál es liviano y elegante que siguió el diseño original de Gnome. Esta distribución se instaló en un Portátil Asus ~X455LD en Julio de 2015.


! 1. Instalación Sistema Operativo
* [[Preinstalación Linux]]
* [[Instalación Base Ubuntu]]

! 2. Instalación y Configuración de Programas Adicionales
!!! Para liberar espacio se desinstalo:
* Ofimática: abiword* gnumeric* 
* Internet: pidgin* thunderbird* xchat*
* Juegos: gnome-mines gnome-sudoku

!!! Instalar aplicaciones adicionales
* Ofimática: libreoffice libreoffice-l10n-es libreoffice-help-es fbreader pdfmod pdftk cups-pdf
* Internet: skype amule
* Multimedia: inkscape vlc audacity soundconverter asunder openshot dvdstyler pavucontrol
* Utilidades: gnome-system-monitor gnome-clocks gparted usb-creator-gtk recoll qtqr
* Servicios: samba system-config-samba openssh-server virtualbox
* Redes: mtr iperf nmap zenmap
* Sistema: ecryptfs-utils xubuntu-restricted-extras playonlinux icedtea-plugin p7zip-full p7zip-rar rar unrar sysv-rc-conf mencoder lame libav-tools ffmpeg2theora gksu

!!! Instalar otras aplicaciones
* https://mega.nz/#sync
* https://www.dropbox.com/install?os=lnx
* https://www.google.com/chrome/browser/desktop/index.html

!!! Para ver DVD / CD con cifrado CSS
# Descargar e instalar la llave pública de los repositorios de Videolan: {{{curl ftp://ftp.videolan.org/pub/debian/videolan-apt.asc | sudo apt-key add -}}}
# Añadir los repositorios de Videolan: {{{echo "deb ftp://ftp.videolan.org/pub/debian/stable ./" | sudo tee /etc/apt/sources.list.d/libdvdcss.list}}}
# Actualizar e instalar: {{{sudo apt-get update; sudo apt-get install libdvdcss2}}}
# Ejecutar: {{{sudo /usr/share/doc/libdvdread4/install-css.sh}}}

!!! En navegadores
* Deshabilitar guardado de contraseña.
* En Chrome quitar pantalla inicial de ingreso de usuario
* Instalación y configuración de diccionario en español
* Verificar el funcionamiento del Plugin de Flash en Firefox y Chrome.
* Verificar el funcionamiento del Plugin de Java en Firefox (Ya no funciona en las últimas versiones de Chrome)
* Instalar complemento para Google Talk

!!! Complementos para Firefox
* ~TiddlyFox (Para utilizar archivos de ~TiddlyWiki): https://addons.mozilla.org/en-us/firefox/addon/tiddlyfox/

!!! Instalación de tipos de letra adicionales (Por ejemplo Calibre)
* Colocar los archivos ttf en: {{{/usr/share/fonts}}}

!!! Organizar ventanas
Configurar el re-dimencionamiento de las ventanas para su organización horizontal o vertical, a través de las teclas de acceso rápido que se configuran en: {{{Gestor de ventanas}}}. Super+Arriba, Super+Abajo, Super+Derecha y Super+Izquierda

!!! Configuración Menú
Los archivos del sistema se encuentran en: {{{/usr/share/applications/}}}
Los archivos personalizados quedan en: {{{/home/<usuario>/.local/share/applications/}}}

!!! Otras instalaciones
* [[umask]]
* [[HP en Linux]]
* [[Epson en Linux]]
* [[Samsung en Linux]]
* [[Chromecast Backgrounds]]


! 3. Resolución de problemas
!!! Memex en ~MoinMoin 1.9 (Ubuntu14.04)
~MoinMoin 1.9 requiere de Python 2.5 o 2.6 para funcionar, pero Ubuntu 14.04 ya no viene con ese paquete, así que se debe seguir las instrucciones de: http://ubuntuhandbook.org/index.php/2013/08/install-python-2-6-2-5-3-3-in-ubuntu-12-04-12-10-13-04/
{{{
$ sudo add-apt-repository ppa:fkrull/deadsnakes
$ sudo apt-get update
$ sudo apt-get install python2.6
}}}

!!! Reproducción Automática de CD con Parole
En la aplicación {{{Dispositivos y soportes extraíbles}}}, en la pestaña {{{Multimedia}}}, en el campo {{{CD de Audio}}}, cambiar las opciones {{{parole --device=%d}}} por {{{parole cdda://}}}

!!! Touchpad se bloquea después de suspensión (Ubuntu 14.04)
El kernel no tiene los drivers necesarios para manejar el Touchapd que viene con Asus X455D, y no se encontraron drivers adicionales que se puedan instalar. Por eso es que el sistema operativo reconoce el Touchpad como un Mouse.

!!! resolv.conf
Si se modifica manualmente el archivo {{{/etc/resolv.conf}}} se pierde el enlace simbólico que existe al archivo {{{/run/resolvconf/resolv.conf}}} que es el que se genera automáticamente cuando se conecta a una red. Si hay problemas de acceso a los DNS con conexiones nuevas, se debe volver a establecer este enlace simbólico.

!!! Google Drive
No existe un cliente que sincronice archivos con Google Drive por línea de comandos.

!!! Crear DVD de Video
{{{DVD Style}}} es el mejor programa para crear DVD de Video con menú, sin embargo la versión 2.5.2 que es la que viene en Ubuntu 14.04 no funciona. En foros dice que la versión 2.9 ya tiene la solución, pero para compilar esta versión en Ubuntu 14.04, se requiere actualizar varias dependencias. Por tanto se tuvo que usar la aplicación {{{devede}}} que aunque no permite tanta personalización del menú de inicio, cumple con su propósito.

!!! Brillo Pantalla
Los botones para cambiar el brillo de la pantalla no funcionan, así que se debe configurar manualmente. Para ello hay que instalar la aplicación {{{xbacklight}}} y agregar los siguientes {{{Atajos de aplicación}}} a través de la aplicación {{{Teclado}}}:
* xbacklight -dec 10: Super+F5
* xbacklight -inc 10: Super+F6
Si desea asignar un valor determinado de brillo, se puede hacer a través del siguiente comando, donde el número puede estar entre 0 y 100:
{{{
$ xbacklight -set 80
}}}
Los drivers z600 sirven para la z515 de Lexmark en Debian/Ubuntu de 32 bits. No funciona en 64 bits. El procedimiento para instalar esta impresora es:

1. Buscar y descargar el archivo ~CJLZ600LE-CUPS-1.0-1.TAR.gz
2. Descomprimir y extraer los archivos que se requieren:
{{{
$ tar -xvzf CJLZ600LE-CUPS-1.0-1.TAR.gz
$ tail -n +143 z600cups-1.0-1.gz.sh > install.tar.gz
$ tar -xvzf z600cups-1.0-1.gz.sh
}}}
3. Instalar la aplicación {{{alien}}} e instalar los drivers:
{{{
# apt-get install alien
# alien -k z600cups-1.0-1.i386.rpm
# alien -k z600llpddk-2.0-1.i386.rpm
# dpkg -i z600cups-1.0-1.i386.deb
# dpkg -i z600llpddk-2.0-1.i386.deb
}}}
4. Conecte la impresora, abra el Administrador de impresoras y escoja el driver Z600.
! Pre-requesitos
* Descargar y descomprimir la versión estable de http://www.limesurvey.org/index.php/Download.html:
{{{
$ wget -cv http://ufpr.dl.sourceforge.net/sourceforge/limesurvey/limesurvey172_build5737_20081007.tgz
$ tar -zxvf limesurvey172_build5737_20081007.tgz
}}}
Se recomienda usar el directorio ''/var/www/'' para su instalación.

! Configuración
* Editar el archivo ''config.php'' y configurar las variables para la conexión a la Base de Datos, nombre usuario administrador (la contraseña se puede dejar la misma, luego se cambia) y el nombre del sito:
{{{
$databasetype       =   'mysql';
$databaselocation   =   'localhost';
$databasename       =   'lime_user';
$databaseuser       =   'lime_db';
$databasepass       =   '******;

$sitename           =   'Servicio de Encuestas';
$defaultuser        =   'soporte';
}}}
* Crear la BD y el usuario en el respectivo Motor de BD.
* Establecer permisos de escritura y lectura a los directorios //tmp// y //uploads// (y sus contenidos), permisos de solo lectura al directorio //admin// (y su contenido):
{{{
# chmod 755 upload/ -R
# chmod 755 tmp/ -R
# chown www-data:www-data tmp/ -R
# chown www-data:www-data upload/ -R
# chmod 555 admin/ -R
}}}

! Instalación
* En el navegador ir a http://polux.unicauca.edu.co/limesurvey/admin/install
* Como ya esta creado la BD sólo se debe llenar
* Si todo sale bien, ahora nos muestra el informe de instalación exitosa. Hacemos click en el botón para ir a la interfaz de administración.
* Al finalizar nos muestra un mensaje de alerta para renombrar o borrar el directorio:
{{{
# rm -rf admin/install/
}}}
* Ir a la interfaz de administración: http://polux.unicauca.edu.co/limesurvey/admin/admin.php. El usuario y contraseña están en el archivo "config.php", en esta interfaz se puede (se debe) cambiar la contraseña.

! Web segura
Para que la contraseña de la interfase administrativa se vaya por una conexión encriptada, se deb hacer lo siguiente:
# Establecer la configuración en apache para que la dirección /limesurvey también se pueda acceder vía https (ver [[Apache]]). Además de crear la siguiente regla de redirecionamiento en la configuración del host virtual http.
{{{
RewriteRule ^/encuestas/admin/(.*)$     https://%{HTTP_HOST}/encuestas/admin/$1 [R,L]
}}}
# Cambiar http por https en la variable $rooturl del archivo limesurvey/config.php
# Reiniciar el servidor apache

! Actualización
# Copia de seguridad del directorio de la aplicación, y de la base de datos (a través de la misma aplicación o de phpmyadmin).
# Descarga y remplazo de la nueva versión de la aplicación web.
# Remplazar el archivo config.php de la versión anterior a la actual y establecimiento de permisos en directorios como en la instalación.
# Cargar la URL de instalación y mirar los mensajes de actualización.
# Borrar el directorio de instalación y listo!

! Links
* [[Installation Guide| http://docs.limesurvey.org/tiki-index.php?page=Installation&structure=]]
* [[Manual de Instrucciones en Español | http://docs.limesurvey.org/tiki-index.php?page=Manual+de+Instrucciones+en+Espa%C3%B1ol]]
* [[Upgrading from a previous version | http://docs.limesurvey.org/tiki-index.php?page=Upgrading+from+a+previous+version#Upgrade_FAQ]]


! Apuntes
<<tagging Apuntes>>
! Xubuntu 14.04
<<tagging Xubuntu1404>>
! Lubuntu 14.04
<<tagging Lubuntu1404>>
! Ubuntu 13.04
<<tagging Ubuntu1304>>
! Ubuntu 11.04
<<tagging Ubuntu1104>>
! Ubuntu 10.10
<<tagging Ubuntu1010>>
! Ubuntu 9.10
<<tagging Ubuntu910>>
! Ubuntu 7.04
<<tagging Ubuntu704>>
! Comandos Linux
<<tagging ComandosLinux>>
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
 major: 1, minor: 1, revision: 0, 
 date: new Date("mar 17, 2007"), 
 source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};

if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};

bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
 if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){ 
 url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
 }
 return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
! logstalgia
Software para visualizar el trafico de un servidor web como si fuera un juego de Pong. Las peticiones llegan en forma de pelotas que el servidor responde como si fuera una raqueta, especificando los códigos de procesamiento como 200 (OK) 302 (redirigido a…) o el 404 (no encontrado). El computador donde se ejecute requiere de tarjeta gráfica

Instalación en Ubuntu:
{{{
# apt-get logstalgia
}}}
Uso local:
{{{
$ logstalgia /var/log/apache/access.log
$ tail -f /var/log/apache/access.log | logstalgia -
}}}
Acceso a registros remotos:
{{{
ssh user@yourserver.com tail -f /var/log/apache/access.log | logstalgia -g "Ad Clicks,/adclick.php,30" -
}}}
Los Logs o registros son archivos en donde se almacenan los mensajes generados por programas, aplicaciones y demonios. Son útiles para comprobar el funcionamiento de los programas. Por lo general, cada mensaje consta la fuente (el programa que generó el mensaje), la prioridad (nivel de importancia del mensaje), la fecha y la hora. En los sistemas GNU/Linux, estos logs se almacenan en el directorio /var/log

! Rotado
Es conveniente contar con los logs del último año, separados por meses, para lo cual se deben cambiar los parámetros de funcionamiento de la utilidad logrotate que es la encargada de realizar esta tarea.

* /etc/logrotate.conf
{{{
# Cada cuanto se rotan los archivos 
monthly

# Cuantos registros por aplicación se guardan
rotate 12
}}}
En el mismo sentido cambiar todos los archivos de configuración que se encuentran en /etc/logrotate.d/ y revisar los nuevos archivos que se van creando con la instalación de las nuevas aplicaciones.

Más información en:
* http://david.f.v.free.fr/ponencias/Taller_de_Seguridad/tallerseguridad-2.html
* http://www.estrellateyarde.es/so/logs-en-linux

! logcheck
Genera alarmas por correo cuando se encuentran determinados patrones en los logs. El fichero de configuración esta en /etc/logcheck/logcheck.conf y adicionalmente se cuenta con unos archivos donde existen una serie de patrones que aparecen en casos de intentos de ataque. 

Instalación:
{{{
# apt-get install logcheck syslog-summary
}}}
Configuración en /etc/logcheck/logcheck.conf
{{{
SYSLOGSUMMARY=1
}}}

Se sugiere configurarlo para que realice el chequeo una vez al día. Para ello debe cambiar la frecuencia en el archivo /etc/cron.d/logcheck:
{{{
02 8 * * *       logcheck    if [ -x /usr/sbin/logcheck ]; then nice -n10 /usr/sbin/logcheck; fi
}}}

Para ejecutar el programa por demanda, se realiza con el siguiente comando:
{{{
# su -s /bin/bash -c "/usr/sbin/logcheck" logcheck
}}}

Si en el equipo esta instalado ntp, se recomienda revisar la siguiente excepción en el archivo /etc/logcheck/ignore.d.server/ntp para evitar que los reportes se vean inundados por los mensajes de sincronización de la hora. Prestar especial atención que se encuentre la cadena de caracteres (status change):
{{{
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ntpd\[[0-9]+\]: kernel time sync (disabled|enabled|status change) [0-9]+$
}}}

Más información en:
* http://gwolf.org/files/logcheck/logcheck.html
* http://logcheck.org
* http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=498992

! logwach
Es otra herramienta de monitoreo de logs que también envía un reporte a la cuenta de correos. Lo hace una vez al día y sobre los reportes del día anterior. 

Instalación:
{{{
# apt-get install logwatch
}}}
El archivo de configuración de encuentra en:  /usr/share/logwatch/default.conf/logwatch.conf, en donde se recomienda colocar el nivel de detalle en alto: {{{Detail = High}}}

Debido a la existencia de un bug en la versión de logwatch que viene con Debian Lenny, no identifica la zona horaria de Colombia, por lo tanto se requiere hacer lo siguiente:
1. Se identifica las letras que nombran la zona horaria en Colombia con:
{{{
# hwclock 
jue 26 feb 2009 15:41:27 COT  -0.000437 seconds
}}}
2. Se introduce la siguiente línea en el archivo /usr/share/perl5/Date/Manip.pm:
{{{
      "cot    -0500 ".  # Colombia
}}}
Adicionalmente se recomienda subir el tamaño máximo del imbox de los usuarios (de 40MB a 500MB), antes de generar un reporte. Esto se hace en el archivo: /usr/share/logwatch/default.conf/services/sendmail-largeboxes.conf 
{{{
$sendmail_largeboxes_size = 500MB
}}}

Más información:
* http://www.logwatch.org/
* http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=464252

! awstats
Herramienta para crear estadísticas de los archivos de registro de un servidor web.

Instalación:
{{{
# apt-get install awstats
# cp /usr/share/doc/awstats/examples/apache.conf /etc/apache2/conf.d/awstats
# chmod o+r /var/log/apache2/access.log (para darle permisos de lectura)
}}}

Los aspectos básicos de la configuración se encuentran en /etc/awstats/awstats.conf, lo más importante es:
{{{
LogFile="/var/log/apache2/access.log"
SiteDomain="mysite.org"
LogFormat=1
}}}

En el archivo de rotación de logs de apache, /etc/logrotate.d/apache2, modificar:
{{{
/var/log/apache2/*.log {
        weekly
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 644 root adm
        sharedscripts
        prerotate
            /usr/lib/cgi-bin/awstats.pl -config=awstats.conf -update        endscript
        postrotate
                if [ -f /var/run/apache2.pid ]; then
                        /etc/init.d/apache2 restart > /dev/null
                fi
        endscript
}
}}}
Finalmente se reinicia apache y se carga la siguiente URL: http://www.mysite.com/cgi-bin/awstats.pl?config=awstat.conf 

La frecuencia con la que se actualizan las estadísticas se determina a través del archivo: /etc/cron.d/awstats

Sin embargo, no es conveniente que este tipo de información quede de forma abierta para cualquier persona, por lo que resulta conveniente proteger el acceso a través de una contraseña o deshabilitar el acceso cgi-bin y crear las páginas como un proceso periódico.

Más información en:
* http://wiki.debian.org/Manual-Howto
* http://www.debianhelp.co.uk/awstats.htm
* http://www.debian-administration.org/articles/277
Mailman es software para la administración de listas de correo electrónico. Más información en: http://www.gnu.org/software/mailman/

! Prerrequisitos
El nombre de dominio de la lista debe tener resolución inversa para que funcione adecuadamente. Por lo general, el dominio se establece de la siguiente manera: listas.dominio.pais

! Instalación
{{{
 #apt-get install mailman
}}}
* En la instalación, el asistente de mailman pregunta por el idioma de la interfaz web. Seleccionamos español 
* Finalmente el asistente nos muestra este mensaje:
{{{
Falta la lista del sitio Mailman, necesita la llamada “lista del sitio”, que es la lista a partir de la que se mandan, por ejemplo, los recordatorios de contraseña. Debe crear esta lista antes de iniciar mailman.
Para crear la lista, ejecute «newlist mailman» y siga las instrucciones que aparecerán en pantalla. Posteriormente deberá reiniciar mailman, ejecutando «/etc/init.d/mailman start».
}}}
* Ejecutamos «newlist mailman»
{{{
# newlist mailman
Indique la dirección de correo de la persona que gestionará la lista: administrador@dominio.pais
Clave inicial de mailman: 
Presione el retorno de carro para notificar al propietario de la lista mailman...
}}}
Por defecto mailman copia archivos en los siguientes directorios (dpkg -L mailman):
* /etc/mailman   (archivos de configuración)
* /var/lib/mailman   (directorio con información de las listas de correo en particular en archives, data y lists)
* /usr/lib/mailman   (archivos de funcionamiento del programa)
* /usr/lib/cgi-bin/mailman   (archivos de la aplicación web)
* /usr/share/doc/mailman   (documentación)
* /usr/share/mailman   (mensajes por idiomas)
* /usr/sbin/   (comandos)

! Configuración Mailman
Los cambios se realizan en el archivo /etc/mailman/mm_cfg.py
{{{
DEFAULT_URL_PATTERN = 'http://%s/mailman'
PRIVATE_ARCHIVE_URL = '/mailman/private'
}}}
También se debe indicar el nombre de dominio que se utilizará para las direcciones de correo de la lista, y que previamente debió haber sido configurado en el servidor DNS:
{{{
DEFAULT_EMAIL_HOST = 'listas.dominio.pais'
}}}
Además hay que indicar el nombre de dominio a través del cual se accede a la interfaz web de Mailman. En ocasiones se coloca igual que el nombre de dominio para los correos de la lista, pero puede ser diferente
{{{
DEFAULT_URL_HOST   = 'www.dominio.pais'    o
DEFAULT_URL_HOST   = 'listas.dominio.pais'
}}}
Finalmente se puede definir el idioma por defecto de las interfaces web y de los mensajes de correo:
{{{
DEFAULT_SERVER_LANGUAGE = 'es
}}}
Si se van a configurar listas de correos de otros dominios diferentes al {{{default}}}, se deben crear las siguientes variables y la siguiente entrada:
{{{
OTHERLIST_EMAIL_HOST = 'listas.otrodominio.pais'
OTHERLIST_URL_HOST = 'listas.otrodominio.pais'
add_virtualhost(OTHERLIST_URL_HOST, OTHERLIST_EMAIL_HOST)
}}}
Después de esto se debe iniciar el servicio:
{{{
# /etc/init.d/mailman start
}}}

! Configuración Exim
No se recomienda integrar Exim y Mailman a través de alias, ya que se tendría que crear manualmente para cada lista creada, sino que se busca que esto se maneje automáticamente. Para lograr esto, se debe crear las definiciones de un enrutador y un transporte en Exim, a través de la creación de lo siguientes archivos.
* /etc/exim4/conf.d/main/04_mailman_options (Cambiar la opción ''domainlist mm_domains'', si se tienen diferentes host virtuales, se separan con dos puntos):
{{{
# Mailman macro definitions

# Home dir for the Mailman installation
MM_HOME=/var/lib/mailman

# User and group for Mailman
MM_UID=list
MM_GID=list

#
# Domains that your lists are in - colon separated list
# you may wish to add these into local_domains as well
domainlist mm_domains=list.example.org

# The path of the Mailman mail wrapper script
MM_WRAP=MM_HOME/mail/mailman
#
# The path of the list config file (used as a required file when
# verifying list addresses)
MM_LISTCHK=MM_HOME/lists/${lc::$local_part}/config.pck
}}}
* /etc/exim4/conf.d/router/450_mailman_aliases:
{{{
mailman_router:
  driver = accept
  domains = +mm_domains
  require_files = MM_LISTCHK
  local_part_suffix_optional
  local_part_suffix = -admin : \
    -bounces   : -bounces+*  : \
    -confirm   : -confirm+*  : \
    -join      : -leave      : \
    -owner     : -request    : \
    -subscribe : -unsubscribe
  transport = mailman_transport
}}}
* /etc/exim4/conf.d/transport/40_mailman_pipe:
{{{
mailman_transport:
  driver = pipe
  command = MM_WRAP \
    '${if def:local_part_suffix \
    {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} \
    {post}}' \
    $local_part
  current_directory = MM_HOME
  home_directory = MM_HOME
  user = MM_UID
  group = MM_GID
}}}
Adicionalmente hay que asegurarse que en la variable dc_other_hostnames del archivo /etc/exim4/update-exim4.conf.conf este incluido el o los dominios que se va a utilizar para manejar las listas de correo.

Después de hacer estos cambios, se debe volver a generar el archivo de configuración de Exim (unificación de todos los archivos de configuración) y reiniciar el servicio:
{{{
# update-exim4.conf
# /etc/init.d/exim4 restart
}}}

Para probar si Exim quedo bien configurado, podemos hacer una prueba para verificar si sabe que debe hacer con las direcciones de una lista de correo:
{{{
# exim4 -bt mailman@listas.dominio.pais
}}}

! Configuración Apache
* Crear un enlace simbólico al archivo de configuración de mailman, desde apache:
{{{
 # cd /etc/apache2/conf.d/
 # ln -s /etc/mailman/apache.conf mailman
 # /etc/init.d/apache2 restart
}}}
* Se puede acceder a la página de administración mediante la URL: http://listas.dominio.pais/cgi-bin/mailman/admin

! Comandos Mailman
* ''newlist'': Crea una nueva lista
* ''rmlist'': Elimina una lista existente (-a para borrar el archivo)
* ''list_lists'': Muestra todas las listas creadas.

!! Crear una lista en host virtual
{{{
# newlist -l es -u <dominio-web> -e <dominio-correo> <nombre-lista>
}}}

! Scripts de Mailman
Descripción de los scripts de Mailman que se encuentran en el directorio de instalación. En una instalación normal de Debian se encuentran en /usr/lib/mailman/bin. Corriendo el script con la opción {{{--help}}} se obtiene información sobre su uso. 

* add_members: adición de miembros a la lista.
* change_pw: cambia la contraseña de una lista.
* check_db: chequea la integridad de la base de datos de una lista contenida en los archivos config.pck y config.pck.last
* check_perms: chequea y arregla los permisos de los archivos de instalación de mailman.
* clone_member: clona las opciones de configuración de una dirección de correo en otras.
* config_list: visualiza y cambia las opciones de configuración de una lista.
* dumpdb: muestra en texto plano el contenido de una base de datos contenida en un archivo pck.
* find_member: busca un miembro en todas las listas.
* list_admins: lista todos los usuarios administradores de una lista.
* list_lists: lista todas las listas de correo.
* list_members: muestra los miembros de una lista.
* mailmanctl: controla el funcionamiento de qrunner.
* mmsitepass: establece una contraseña maestra para todas las listas de correo.
* move_list: mueve los archivos de configuración de una lista de un lugar a otro.
* newlist: crea una nueva lista
* remove_members: retira miembros de una lista.
* rmlist: borra una lista de correos.
* sync_members: sincroniza el listado de miembros entre la base de datos de una lista y un archivo de texto.

! Manejo de la Lista por Correo
Para enviar opciones a una lista de correos implementada en mailman se requiere enviar un correo a la dirección {{{ <listname>-request@<dominio.com> }}}, y en el asunto colocar el comando respectivo:
* unsubscribe

! Problemas

!! Interfaces en Spaninglish
En ocasiones al instalar Mailman y al configurar la variable ~DEFAULT_SERVER_LANGUAGE = 'es' en el archivo /etc/mailman/mm_cfg.py, los mensajes de las interfaces aparecen parte en ingles y parte en español.
La solución que he encontrado para solucionar este problema, es copiar el directorio /usr/share/mailman/es/ en /var/lib/mailman/templates/ 

!! Establecer una nueva contraseña de administración a una lista de correo
Para hacer esto se requiere correr un script que se encuentra en el directorio de instalación, por lo que se debe dar la ruta completa:
{{{
# /usr/lib/mailman/bin/change_pw -l <lista> -p <contraseña>
}}}
Para establecer una clave maestra con la cual se puede acceder a la interface administativa de cualquier lista, se hace de la siguiente manera:
{{{
# /usr/lib/mailman/bin/mmsitepass
}}}

!! Mover una lista
1. Sacar una copia de la lista de usuarios:
{{{
# list_members -f -o <nombre-archivo.txt> <nombre-lista> 
}}}
2. Sacar una copia de la configuración de la lista:
{{{
# config_list -o <nombre-archivo.txt> <nombre-lista>
}}}
3. Sacar una copia de seguridad de las carpetas de la lista contenidas en /home/mailman:
{{{
# zip -r <lista>.zip archives/private/<lista>* lists/<listas>
}}}
4. Borrar la lista sin borrar e archivo:
{{{
# rmlist <nombre-lista>
con -a borra todo
}}}
5. Crear nuevamente la lista:
{{{
# newlist <nombre-lista>
Correo del administrador
Contraseña de administración de la lista
}}}
6. Adicionar lista de usuarios:
{{{
# add_members -n <nombre-archivo.txt> -w n <nombre-lista>
-w n es para que no le envié un mensaje de bienvenida a los correos de la lista
}}}
7. Recuperar configuración. Sin embargo, si el problema de la lista es por este motivo, es mejor hacerlo manualmente.
{{{
# config_list -i <nombre-archivo.txt> <nombre-lista>
}}}

!! Migración de Servidor de Listas
1. Comprimir los directorios {{{archives}}}, {{{data}}} y {{{list}}} de /var/lib/mailman en el servidor origen
2. Realizar la instalación y configuración de mailman, exim y apache en el servidor destino (tal y como se indica al inicio de este documento).
3. Remplazar los archivos {{{archives}}}, {{{data}}} y {{{list}}} del servidor destino con los del servidor origen
Si la migración del servidor es en el mismo dominio, es suficiente con los pasos 1 a 3. Si se cambia de dominio, hay que ejecutar el siguiente comando:
{{{
# withlist -l -r fix_url <listname>
}}}

!! Borrar un mensaje del historial
1. Sacar backup de directorios de la lista en private y public, y del archivo *.mbox
2. Editar el archivo mbox, borrando los mensajes que se quieren eliminar
3. Ejecutando el comando
{{{
# cd ~mailman
# ./bin/arch lista
}}}
Más información en: http://wiki.list.org/pages/viewpage.action?pageId=4030681

! Referencias
* http://www.exim.org/howto/mailman21.html
* http://www.debian-administration.org/articles/617
* http://www.gnu.org/software/mailman/site.html
* http://wiki.list.org/display/DOC/How+do+I+move+a+list+to+a+different+server-Mailman+installation.
* http://tomster.org/geek/freebsdcookbook/ar01s04.html

[[Linux]] [[ServidorDebian]] [[Lubuntu|Instalación Lubuntu]] [[Xubuntu|Instalación Xubuntu]] [[MonitoreoLinux]] [[Windows]] [[Android]] [[Ulises]]
! pdftk
Instalar {{{pdftk}}}

Merge Two or More ~PDFs into a New Document
{{{
pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf
}}}

or (Using Handles):
{{{
pdftk A=1.pdf B=2.pdf cat A B output 12.pdf
}}}

or (Using Wildcards):
{{{
pdftk *.pdf cat output combined.pdf
}}}

Split Select Pages from Multiple ~PDFs into a New Document
{{{
pdftk A=one.pdf B=two.pdf cat A1-7 B1-5 A8 output combined.pdf
}}}

Rotate the First Page of a PDF to 90 Degrees Clockwise
{{{
pdftk in.pdf cat 1east 2-end output out.pdf
}}}

Rotate an Entire PDF Document's Pages to 180 Degrees
{{{
pdftk in.pdf cat 1-endsouth output out.pdf
}}}
Each option sets the page rotation as follows (in degrees): north: 0, east: 90, south: 180, west: 270, left: -90, right: +90, down: +180. left, right, and down make relative adjustments to a page's rotation.

Encrypt a PDF using 128-Bit Strength (the Default) and Withhold All Permissions (the Default)
{{{
pdftk mydoc.pdf output mydoc.128.pdf owner_pw foopass
}}}

Same as Above, Except a Password is Required to Open the PDF
{{{
pdftk mydoc.pdf output mydoc.128.pdf owner_pw foo user_pw baz
}}}

Same as Above, Except Printing is Allowed (after the PDF is Open)
{{{
pdftk mydoc.pdf output mydoc.128.pdf owner_pw foo user_pw baz allow printing
}}}

Decrypt a PDF
{{{
pdftk secured.pdf input_pw foopass output unsecured.pdf
}}}

Join Two Files, One of Which is Encrypted (the Output is Not Encrypted)
{{{
pdftk A=secured.pdf mydoc.pdf input_pw A=foopass cat output combined.pdf
}}}

Uncompress PDF Page Streams for Editing the PDF Code in a Text Editor
{{{
pdftk mydoc.pdf output mydoc.clear.pdf uncompress
}}}

Repair a PDF's Corrupted XREF Table and Stream Lengths (If Possible)
{{{
pdftk broken.pdf output fixed.pdf
}}}

Burst a Single PDF Document into Single Pages and Report its Data to doc_data.txt
{{{
pdftk mydoc.pdf burst
}}}

Report on PDF Document Metadata, Bookmarks and Page Labels
{{{
pdftk mydoc.pdf dump_data output report.txt
}}}

! convert
Se requieren los paquetes {{{imagemagick}}} y {{{gs}}}.
Convertir imágenes en PDF. 
{{{
$ convert *.jpg archivo.pdf
}}}

Convertir las páginas de un PDF en imágenes:
{{{
$ convert mipdf.pdf imagen.jpg
$ convert mipdf.pdf[0-21] imagen.jpg
$ convert -density 300 mipdf.pdf imagen.jpg   [Para más calidad]
}}}

! poppler-utils
Imprimir archivos protegidos para no impresión (requiere el paquete {{{poppler-utils}}}):
{{{
$ pdftops archivo.pdf
}}}
Extrae texto plano y texto en html de PDF cuando las páginas no han sido escaneadas:
{{{
$ pdftotex archivo.pdf
$ pdftohtml archivo.pdf
}}}

! tesseract
Para extraer texto escaneado de PDF o JPG, se debe tener instalado {{{tesseract-ocr tesseract-ocr-spa imagemagick}}} y hacer lo siguiente: 1) convertir el PDF o el JPG a TIF y luego hacer el reconocimiento OCR:
{{{
$ convert archivo.jpg archivo.tif 
$ tesseract archivo.tif archivo -l spa 
}}}

! pdfimages
Para extraer las imágenes de un PDF, se realiza los siguiente (depende de los paquetes {{{imagemagick xpdf-utils}}}):
{{{
$ pdfimages archivo.pdf prefijo
$ convert prefijo.ppm prefijo.jpg
}}}

! gs
Reducir tamaño, requiere instalar paquetes {{{ghostscript}}} y {{{gsfonts}}}, aunque el resultado no es muy bueno habrá que mirar otros parámetros:
{{{
$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=PDFREDUCIDO.pdf PDFORIGINAL.pdf
}}}

Para que la aplicación no quede amarrada a una IP Fija sino que funcione con la IP con la que se cargue, en el archivo {{{LocalSettings.php}}} se debe colocar lo siguiente:
{{{
$wgServer = 'http://'.$_SERVER['HTTP_HOST'].'';
}}}
! vmstat

! dstat
Visualizador de recursos del sistema que remplaza vmstat, iostat, netstat, nfsstat e ifstat. //Se instala con el paquete dstat//
* http://dag.wieers.com/home-made/dstat/
{{{
$ pactl load-module module-loopback
}}}

Más información:
* http://divideetvinces.blogspot.com/2010/06/entrada-de-sonido-con-pulse-audio-en.html
Moin es un wiki que se puede correr en cualquier computador (Windows, Linux, Mac) de forma muy fácil. El único requisito para poner a funcionar un wiki con Moin versión 1.9 es tener una versión de Python entre la 2.4 y la 2.5.

El proceso que se sigue a continuación es para realizar la migración de datos desde la versión 1.5 a la 1.9.

En Ubuntu 10.04 y posteriores se quita Python2.4, así que se requiere una instalación especial de esta versión de Python para poder hacer la miggración, la cual se explica en: http://hazaeljm.wordpress.com/2010/08/12/conservar-python24/

! Realizar Backup
* Directorio de Datos: <~Ruta_Antiguo_Moin>/wiki/data
* Directorio del Programa: <~Ruta_Antiguo_Moin>/~MoinMoin/, <~Ruta_Antiguo_Moin>/wiki/underlay y <~Ruta_Antiguo_Moin>/htdocs
* Archivos de configuración: moin.py, wikiconfig.py, farmconfig.py
En la nueva versión de Moin, el directorio  <~Ruta_Moin>/htdocs fue movido a  <~Ruta_Antiguo_Moin>/~MoinMoin/web/static/htdocs

! Nueva Versión de Moin 
* Descargar la versión más reciente de Moin: http://moinmo.in/MoinMoinDownload
* Descomprimir el archivo
* Ejecutarlo en modo Desktop para probar su funcionamiento[1]
{{{
$ cd <Ruta_Nuevo_Moin>
$ python wikiserver.py
}}}
* Crear un usuario e instalar las páginas del sistema en Ingles y Español

! Migración 
Referencias [2], [3], [4]

!! Mover datos
{{{
$ rm -fr wiki/data
$ cp <Ruta_Antiguo_Moin>/wiki/data/ <Ruta_Nuevo_Moin>/wiki
}}}

!! Borrar Cache)
{{{
$ MoinMoin/script/moin.py maint cleancache
}}}

!! Scripts de Migración
El proceso de migración de los datos de una versión antigua de moin a una versión, nueva depende de la versión en la que fueron creados los datos.

!!! Para datos creados en un Moin anterior a la 1.3.4

!!! Para datos creados en un Moin anterior a la 1.5.3 (pero posterior a la 1.3.4)
Debido al cambio de sintaxis que se da en la versión 1.5.3 de Moin, se debe ejecutar el script 152_to_1050300.py antes de realizar el proceso de migración.
{{{
$ MoinMoin/script/old/migration/152_to_1050300.py wiki/data/
}}}
El usuario con el que se ejecuta este script debe tener permisos de escritura sobre los archivos del directorio <~Ruta_Antiguo_Moin>/wiki/data/

!!! Script Final
{{{
$ MoinMoin/script/moin.py migration data
}}}
Después de este proceso se crea el archivo <~Ruta_Nuevo_Moin>/wiki/data/rename1.txt el cual se debe revisar para ver si se requiere cambiar el nombre de alguna página del wiki. El archivo editado se debe guardar como rename2.txt y después volver a ejecutar el script.

! Problemas y Soluciones
!! ~PageComment2
Este macro no trabaja con Moin 1.9 y genera un error, por cuanto hay necesidad de eliminar este registro de todas las páginas. Esto se soluciono copiando los comentarios en la página correspondiente, y remplazando el registro de cada página:
{{{
$ export sold="PageComment2(markup=1, commentfirst=1, articleview=1)"
$ export snew="BR"
$ grep -rl "PageComment2(markup=1, commentfirst=1, articleview=1)" * | xargs sed -i -e "s/$sold/$snew/g"
}}}

!! ~EmbedObject
Este macro ya viene incluido en la versión 1.9 de Moin, razón por la cual se debe eliminar del directorio <~Ruta_Nuevo_Moin/wiki/data/plugin/macro>. Adicionalmente se deben agregar las siguientes líneas para habilitar los tipos de formatos que se quieran visualizar[5]:
{{{
    mimetypes_xss_protect = ['application/vnd.visio', ] 

    mimetypes_embed = ['application/x-dvi', 'application/postscript', 'application/pdf', 'application/ogg', 'application/x-shockwave-flash', 'application/xhtml+xml', 'image/x-ms-bmp', 'image/svg+xml', 'image/tiff', 'image/x-photoshop', 'audio/mpeg', 'audio/midi', 'audio/x-wav', 'video/fli', 'video/mpeg', 'video/quicktime', 'video/x-msvideo', 'chemical/x-pdb', 'x-world/x-vrml', 'text/html', ] 
}}}

!! ~FreeMind
Los macros[6][7] no funcionan en Moin 1.9

! Referencias
[1] http://moinmo.in/DesktopEdition
[2] http://moinmo.in/HelpOnUpdating
[3] http://moinmo.in/HowTo/Migrate%20from%201.5%20to%201.6
[4] http://moinmo.in/RickVanderveer/UpgradingFromMoin15ToMoin16
[5] http://moinmo.in/HelpOnMacros/EmbedObject
[6] http://moinmo.in/MacroMarket/FreeMindBrowser
[7] http://moinmo.in/MacroMarket/FreeMindFlashBrowser


! Instalación[1]

Las versiones de moodle después de la 1.5 se encuentran en la página principal[3], las versiones anteriores se debe buscar en otra dirección[4] (mirar el patron en la ruta y cambiarlo de acuerdo con la versión que se requiere).
# Revisar que las versiones de php, apache y mysql son compatibles con la versión de moodle a instalar.
# Descargar la versión de moodle a instalar, descomprimir en el directorio raíz de apache y darle los permisos correspondientes.
# Crear el directorio de datos (o descomprimirlo si es una restauración) y darle los permisos correspondientes. Con Moodle anterior a 1.6, la BD debe crearse con codificación latin1_bin. Con Moodle 1.6 y posteriores, la BD debe tener codificación ~UTF-8.
# Crear el usuario y la base de datos (e importar el archivo sql si es una restauración).
# Realizar la configuración básica en el archivo config.php
# Cargar el sitio web y seguir las indicaciones.

! Actualización[2]
La migración de Moodle requiere pasar de una versión a otra a la vez para lo cual se recomienda revisar la documentación de moodle sobre la instalación y actualización de cada versión[1][2]. Para pasar de la versión 1.4 a la 1.9 se recimienda realizar la siguiente secuencia: 1.4 a 1.5, 1.5 a 1.6 y conversión de BD, 1.6 a 1.8, y 1.8 a 1.9. 
# Realizar un backup de la aplicación, del directorio de datos y de la base de datos.
# Descargar la nueva versión de moodle a instalar, descomprimir en el directorio raíz de apache y darle los permisos correspondientes.
# Realizar la configuración básica en el archivo config.php
# Cargar la dirección http://servidor/moodle/admin y seguir las indicaciones.

Después de realizar la migración a la versión 1.6 es necesario hacer la migración de la base de datos de codificación latin a ~UTF-8[6]. Esto se realiza a través de la opción que se indica en la página de administración de la aplicación.

! Referencias
[1] http://docs.moodle.org/en/Installing_Moodle
[2] http://docs.moodle.org/en/Upgrading
[3] http://download.moodle.org/
[4] http://download.moodle.org/stable14/
[5] http://rm-rf.es/backups-mysql-con-mysqldump/
[6] http://docs.moodle.org/en/Database_migration

Migrar las cuentas de usuario de un computador con GNU/Linux a otro:

1. Copiar la información de cada usuario de los siguientes archivos, entre el equipo origen y el destino:
* /etc/passw
{{{
soporte:x:1002:50:Soporte Telematico:/home/soporte:/bin/bash
}}}
* /etc/shadow
{{{
soporte:$1$bdQPL0ma$NNsRyGfE5shbYTO.eVb7q0:12501:0:99999:7:::
}}}

2. Sacar una copia del directorio del usuario (zip, tgz, etc.) y pasarlo al otro equipo. La ruta en el equipo destino debe ser la misma, de lo contrario se debe cambiar los parámetros en el archivo /etc/passwd

3. Establecer el propietario del directorio en el equipo destino:
{{{
# chown soporte -R soporte
}}}
Se puede utilizar el siguiente script para establecer el usuario y grupo de los directorios home de los usuarios de un equipo:
{{{
awk -F: 'BEGIN{print "#!/bin/sh"} {print "chown -R " $3 "." $4, $6}' /etc/passwd |grep "home" > a; chmod +x a; ./a; rm a
}}}





! Configuración Desktop

1. Instalar una versión de python superior a la 2.4: http://www.python.org/

2. Descargar y descomprimir la versión 1.6.4 de moin: http://moinmo.in/MoinMoinDownload

3. Descargar y descomprimir el último backup completo (data_full_*.tgz) de slcolombia.org: http://www.slcolombia.org/dataED/

4. Mover los directorios data y underlay del backup al directorio wiki de moin.

5. Modificar el puerto (si se requiere) y el acceso a las interfaces (si es requiere abrir el acceso desde otros equipos) en el archivo moin.py
{{{
port = 8080
interface = ''
}}}

6. Modificar el archivo con la configuración wikiconfig.py del wiki (se puede tomar como referencia el archivo que viene en el backup):
{{{
# -*- coding: iso-8859-1 -*-
import sys, os
from MoinMoin.config.multiconfig import DefaultConfig

class Config(DefaultConfig):
    moinmoin_dir = os.path.abspath(os.path.normpath(os.path.dirname(sys.argv[0])))
    data_dir = os.path.join(moinmoin_dir, 'wiki', 'data')
    data_underlay_dir = os.path.join(moinmoin_dir, 'wiki', 'underlay')
    sitename = 'El Directorio'
    interwikiname = 'ElDirectorio'
    logo_string = u'<img src="http://www.slcolombia.org/wiki/common/moinmoin.png" alt="Logo El Directorio">'
    page_front_page = u"PáginaInicial"
    acl_rights_default = u"All:read"
    default_lang = 'es'
    charset = 'iso-8859-1'
    navi_bar = [u'%(page_front_page)s',u'CambiosRecientes',u'AyudaDeContenidos',u'Lista_de_correo/InterfazWikiForo',u
'BuscarPágina',u'AcercaDe']
    theme_default = 'classic'
    theme_force = True
    tz_offset = -5.0
    language_default = 'es'
    show_hosts = 1
}}}

7. Se ejecuta el script de python para iniciar el servicio:
{{{
$ python moin.py
}}}

Acceder a través de un navegador: http://dominio:puerto

Scripts para automatizar la sincronización cada domingo (que es cuando se realizan los backups en el servidor slcolombia.org):

mirror-slcolombia.sh
{{{
#!/bin/sh
# Mirror de El Directorio

# Definicion de variables globales
DIR_MOIN="/home/moin-slcolombia"
DAEMON="moin.py"
ANIO=`date +%Y`
MES=`LC_TIME="en_US" date +%b`
DIA=`date +%-d`
DOMINIO="http://www.slcolombia.org/dataED"
ARCHIVO="data_full_"$ANIO"-"$MES"-"$DIA".tgz"
URL=$DOMINIO/$ARCHIVO
SIZE_ARCHIVO=0
SIZE_COMPARACION=360000000  # Peso del archivo para verificar descarga
USER="www-data"

# Descarga de archivo
cd $DIR_MOIN
echo "Descargando el archivo $URL"
wget $URL
ls -lh $ARCHIVO
SIZE_ARCHIVO=`ls -l $ARCHIVO | awk '{print $5}'`

if [ $SIZE_ARCHIVO -gt $SIZE_COMPARACION ]; then
        # Descomprimir
        tar -xzf $ARCHIVO

        # Bajar el servicio
       ps -ef |grep "python $DIR_MOIN/$DAEMON" |grep $USER | awk '{print "kill " $2}' | sh

        # borrar directorios previos y mover
        rm -fr wiki/data wiki/underlay
        mv u02/eldirectorio/data u02/eldirectorio/underlay wiki

        # establece los permisos adecuados
        chown $USER.$USER -R $DIR_MOIN
        chmod 755 -R $DIR_MOIN

        # Inicia el servicio
        python $DIR_MOIN/$DAEMON &

        # Borra los archivos que no necesita
        rm -fr u02 $ARCHIVO

        echo -e "\n Actualizacion Realizada!"
else
        echo -e "\n Actualizacion abortada!"
fi
}}}

/etc/init.d/moin-slcolombia
{{{
#! /bin/sh 
NAME="Moin slcolombia"
USER="www-data"
DIR="/home/moin-slcolombia"
DAEMON="moin.py"

case "$1" in 
  start) 
    echo "Starting $NAME..." 
    su -c "python $DIR/$DAEMON" $USER &
    ;; 

  stop) 
    echo -n "Stopping $NAME..." 
    echo . 
    ps -ef |grep "python $DIR/$DAEMON" |grep $USER | awk '{print "kill " $2}' | sh
    ;; 

*) 
    echo "Usage: /etc/init.d/$NAME {start|stop}" 
    exit 1 
    ;; 
esac
}}}

! Configuración Server

Instalación de ~MoinMoin 1.9.3 como servidor en Ubuntu 10.04 y en Debian 5.0. Esta misma versión se puede utilizar como desktop.

! Requerimientos
Paquetes que deben estar instalados y funcionando[1]:
* Apache + libapache2-mod-wsgi
* Python 2.5 o 2.6 (Ubuntu 10.04 viene con 2.6 y Debian 5.0 con 2.5) + python-xapian + python-gdchart2 + python-4suite-xml

! Instalación y Configuración Básica
1. Descargar y descomprimir de: http://moinmo.in/MoinMoinDownload
{{{
$ wget http://static.moinmo.in/files/moin-1.9.3.tar.gz
$ tar -xzf moin-1.9.3.tar.gz
}}}
2. Probar el funcionamiento del wiki (como desktop)[1]:
{{{
$ cd moin-1.9.3
$ python wikiserver.py
}}}
3. Crear instancia [1][3]:
{{{
# mkdir /<Ruta_Instancia>                                                    (directorio con el código y la instancia del wiki)
# mkdir /<Ruta_Instancia>/wiki                                               (directorio de la instancia de wiki propiamente dicha)
# cp -r /<Ruta_Descomprimido>/MoinMoin /<Ruta_Instalación>                   (copia código de MoinMoin)
# cp -r /<Ruta_Descomprimido>/wiki/data /<Ruta_Instalación>/wiki             (copia directorio data de la instancia de wiki)
# cp -r /<Ruta_Descomprimido>/wiki/underlay /<Ruta_Instalación>/wiki         (copia directorio underlay de la instancia de wiki)
# cp <Ruta_Descomprimido>/wiki/server/moin.wsi /<Ruta_Instalación>           (copia archivo ejecutable)
# cp <Ruta_Descomprimido>/wiki/config/wikiconfig.py /<Ruta_Instalación>      (copia archivo de configuración)
# chmod 750 -R /<Ruta_Instalación>
}}}
4. En /<~Ruta_Instalación>/moin.wsi agregar la ruta donde se encuentran los archivos de configuración [2][3]:
{{{
sys.path.insert(0, '/<Ruta_Instalación>')
}}}
5. En el archivo de configuración de apache /etc/apache/site-available/defaul, agregar las siguientes líneas si se quiere que el wiki sea la aplicación principal en ese dominio [2]:
{{{
        WSGIScriptAlias / /var/moin/moin.wsgi
        WSGIDaemonProcess moin user=www-data group=www-data processes=5 threads=10 maximum-requests=1000 umask=0007
        WSGIProcessGroup moin
}}}
6. Se configuran los parámetros mínimos del wiki en /<~Rura_Instalación>/wikiconfig.py
{{{
    instance_dir = os.path.join(wikiconfig_dir, 'wiki')          # Para que tome los directorios data y underlay como rutas relativas a la ubicación del directorio wiki
    sitename = u'NombreCorto'
    superuser = [u"SuperUsuario", ]
    acl_rights_before = u"SuperUsuario:read,write,delete,revert,admin"
    language_default = 'es'
    chart_options = {'width': 600, 'height': 300}
}}}
7. Probar la instalación abriendo la URL del wiki en un navegador.
8. Crear el Super Usuario tal y como se definió en el archivo de configuración.
9. Instalación de las páginas en Ingles y Español, para ello hay que ingresar con el Super Usuario y seguir el enlace "install help and system page packages".

! Configuraciones adicionales

!! ~EmbedObject
Macro para visualizar archivos multimedia adjuntos a las páginas wikis manejados por los plugins o por el propio navegador. Aunque esta incluido en el paquete de Moin se encuentra deshabilitado por razones de seguridad. Para habilitar el macro se requiere adicionar las siguientes líneas en el archivo wikiconfig.py[4]:
{{{
    mimetypes_xss_protect = ['text/html', 'application/xhtml+xml',] 
    mimetypes_embed = ['application/x-shockwave-flash', 'application/x-dvi', 'application/postscript', 'application/pdf', 'application/ogg', 'application/vnd.visio', 'image/x-ms-bmp', 'image/svg+xml', 'image/tiff', 'image/x-photoshop', 'audio/mpeg', 'audio/midi', 'audio/x-wav', 'video/fli', 'video/mpeg', 'video/quicktime', 'video/x-msvideo', 'chemical/x-pdb', 'x-world/x-vrml',] 
}}}

!! HTML
Macro para permitir la ejecución de código HTML en las páginas wikis. Es la única forma que se ha encontrado para embeber los objetos de los servicios de la Web 2.0, sin embargo, introduce todos los problemas de seguridad que se dan con las páginas web. Se recomienda su uso sólo si esta restringida la edición de páginas en el wiki[5].
1. Descargar el macro de: http://moinmo.in/MacroMarket/HTML
2. Ubicar el archivo en el directorio de macros de la instancia de moin en la que se va a utilizar, y dar los permisos correspondientes:
{{{
# cp HTML.py /<Ruta_Instalación>/wiki/data/plugin/macro/
# chown www-data.www-data /<Ruta_Instalación>/wiki/data/plugin/macro/HTML.py
# chmod 750 /<Ruta_Instalación>/wiki/data/plugin/macro/HTML.py
}}}
3. Usar el macro, colocando el código html dentro de la siguiente sintaxis:
{{{
<<HTML(<b>bold</b>)>>
}}}
Embeber video de Youtube (por ejemplo):
{{{
<<HTML(<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/3H8bnKdf654?fs=1&amp;hl=es_ES&amp;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/3H8bnKdf654?fs=1&amp;hl=es_ES&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>)>>
}}}
También se puede embeber una página web completa en un frame[7]:
{{{
<<HTML(<iframe src="http://petrolera.xarxa.net/inscrits.php?classe=N" _fcksavedurl=""http://petrolera.xarxa.net/inscrits.php?classe=N"" width="100%" height="600"></iframe>)>>
}}}

!! Instalar Thema
Más información en [6].
1. Descargar y descomprimir un thema de acuerdo con la versión de Moin, de: http://moinmo.in/ThemeMarket
2. Mover los directorios {{{css}}} y {{{img}}} a {{{/<Ruta_Descomprimido>/MoinMoin/web/static/htdocs/<Directorio_Thema>/}}}
3. Mover el archivo {{{NombreThema.py}}} a {{{/<Ruta_Descomprimido>/wiki/data/plugin/theme/}}}
4. Establecer permisos y usuarios en los directorios y archivos de destino.
5. Reiniciar el servidor web.
6. Cargar el wiki en un navegador, ingresar con un usuario y en preferencias cambiar el thema.

!! Modificar un Thema por Defecto
Más información en [6].
1. Hacer una copia, con otro nombre, del directorio del thema que se encuentra en {{{/<Ruta_Descomprimido>/MoinMoin/web/static/htdocs/}}}
2. Copiar el script del thema que se encuentra en {{{/<Ruta_Descomprimido>/MoinMoin/theme/}}} a {{{/<Ruta_Descomprimido>/wiki/data/plugin/theme/}}}
3. Cambiar el nombre del script con el mismo nombre que le estableció al directorio.
4. Edite el script en el nuevo directorio y cambie el parámetro {{{name}}} con el nuevo nombre.
5. Establecer permisos y usuarios en los directorios y archivos de destino.
6. Reiniciar el servidor web.
7. Cargar el wiki en un navegador, ingresar con un usuario y en preferencias cambiar el thema, para verificar.
8. Modifique el thema.

! Referencias
[1] http://master19.moinmo.in/InstallDocs
[2] http://ubuntulife.wordpress.com/2010/08/24/instalando-moinmoin-en-ubuntu-la-wiki-que-utiliza-canonical/
[3] http://cjenkins.wordpress.com/2010/03/01/instalacion-de-moinmoin-tipo-granja-en-debian-lenny-como-wsgi/
[4] http://master19.moinmo.in/HelpOnMacros/EmbedObject
[5] http://moinmo.in/MacroMarket/HTML
[6] http://moinmo.in/HelpOnThemes
[7] http://moinmo.in/MoinMoinTips#Including_entirely_external_HTML
Moin es un wiki que se puede correr en cualquier computador (Windows, Linux, Mac) de forma muy fácil. 

Hasta la versión 1.5.5 se requería bajar un paquete particular, denominado moin-desktop para utilizarlo en un computador (diferente a si la idea era utilizar esta aplicación en un servidor), pero a partir de la versión 1.5.9 el mismo paquete moin permite la instalación en modo servidor como en modo desktop. 

El único requisito para poner a funcionar un wiki con Moin (entre las versiones 1.3.4 y 1.6.4) es tener una versión de Python entre la 2.3 y la 2.4.1. 

! Instalación

* Paso 1. Instalación y/o verificación de la versión de Python.
* Paso 2. Descargar el archivo moin-desktop (anterior a 1.5.5) de http://sourceforge.net/projects/moin/ o moin (superior a 1.5.9) de http://moinmo.in/DesktopEdition y descomprimirlo
* Paso 3. Por línea de comandos ejecutar:
{{{
$ python moin.py
}}}
* Paso 4. Con el navegador ingresar a la página: http://127.0.0.1:8080
Si se requiere recuperar un sitio web a partir de un backup se continua con los siguientes pasos:
* Paso 5. Copiar dentro del directorio wiki, los directorios data y underlay del backup.
* Paso 6. Reiniciar la aplicación y cargar nuevamente la página web local.
Con este procedimiento se tendrá acceso al contenido del wiki del servidor de forma local.

Para cambiar algunos parámetros de la configuración del wiki, se debe agregar las opciones al final del archivo wikiconfig.py.

! Configuración de una granja de wikis
Moin permite cargar varias instancias o wikis con una sola aplicación. Si bien esta opción de configuración viene pensada para la instalación como servidor, haciendo algunos trucos, también se puede tener para la instalación desktop. 

Este truco consiste en que cada instancia o wiki de ejecutará en un puerto diferente, de tal forma que el ingreso a través del navegador, se realizara con las direcciones: localhost:8080, localhost:8081 y así sucesivamente. Los pasos para la configuración son:

1. Después de descargar y descomprimir la versión de moin con la que se va a trabajar, entrar al directorio wiki y mover el directorio htdocs fuera de el.

2. Copiar y renombrar el directorio wiki para cada una de las instancias o wikis diferentes que se quiera crear.

3. Crear el archivo farmconfig.py y crear una entrada, por cada wiki que se quiera ejecutar. Tenga en cuenta que por cada wiki debe definir cual será el nombre y el puerto en el que se va a cargar. Ejemplo:
{{{
wikis = [
        ("diario",  r".*:8080.*$"),
        ("bibliografia",  r".*:8081.*$"),
        ("canciones",  r".*:8082.*$"),
]
}}}

4. Copiar y renombrar el archivo wikiconfig.py por cada uno de los wikis que se quiere crear. Así con el ejemplo se debe tener: diario.py, bibliografia.py y canciones.py con un contenido mínimo como el que se presenta a continuación (ejemplo con moin-bibliografia.py):
{{{
# -*- coding: utf-8 -*-
# bibliografia.py
"MoinMoin - Configuration"

from MoinMoin.multiconfig import DefaultConfig

class Config(DefaultConfig):
    sitename = u'Fichas Bibliográficas'
    data_dir = './bibliografia/data/'
    data_underlay_dir = './bibliografia/underlay/'
    acl_rights_after = acl_rights_default = u"All:read,write,delete,revert,admin"
}}}
Tenga en cuenta que en este archivo, se asume que el directorio donde se encuentra en wiki bibliografia (y que se creo a partir del directorio wikii original), se llama bibliografia. Para realizar una configuración más detallada se puede consultar la documentación de http://moinmo.in

5. Copiar y renombrar el archivo moin.py por cada uno de los wiki. De acuerdo con el ejemplo se debería tener: moin-diario.py, moin-bibliografia.py y moin-canciones.py, en los cuales se debe modificar las rutas del directorio del wiki, la ruta del directorio htdocs y el puerto (ejemplo con moin-bibliografia.py):
{{{
class DefaultConfig(StandaloneConfig):
    docs = os.path.join(moinpath, 'bibliografia', '../htdocs')
    port = 8081
}}}

6. Para acceder al wiki, sólo se debe ejecutar el script correspondiente y cargar la página en el navegador. Por ejemplo:
{{{
$ python moin-bibliografia.py

Loading ...
Serving on 127.0.0.1:8081
}}}

! Macros

Para verificar si los macros se cargan correctamente, se puede consultar la página ~SystemInfo en el wiki de Moin.

!! ~FreeMindBrowser

El ~FindMindBrowser es un applet para la visualización de mapas mentales elaborados con el programa ~FreeMind. Se ha probado en moin versión 1.3 y 1.5, pero sólo ha funcionado en esta última. 

Esta aplicación, al igual que ~FreeMind, se puede descargar de: http://sourceforge.net/project/showfiles.php?group_id=7118. Después de descargar el archivo freemind-browser-0_7_1.zip, se debe descomprimir y obtener el archivo freemindbrowser.jar, este es el applet.

Luego, el archivo freemindbrowser.jar se debe copiar en htdocs/applets/~FreeMindBrowser, el directorio ~FreeMindBrowser hay que crearlo. Se debe verificar que tanto el directorio creado como el archivo copiado tengan permisos de lectura y ejecución para todos los usuarios.

El Macro ~FreeMindBrowser es una aplicación en python creada para integrar el applet ~FreeMindBrowser dentro de ~MoinMoin. Este Macro, que se llama ~FreeMindBrowser_patched.py y se puede descargar de la página de ~MojnMoin: http://moinmoin.wikiwikiweb.de/MacroMarket. Después de descargar el archivo ~FreeMindBrowser_patched.py y renombrarlo como ~FreeMindBrowser.py se debe copiar en el directorio data/plugin/macro.

Este macro requiere de los siguientes parámetros para su utilización dentro de una página de Moin:
{{{
[[FreeMindBrowser(attachment:archivo.mm,ancho,alto)]]
}}}

!! ~TWikiDraw

Para que fusione la herramienta draw en moin 1.5 se requiere descargar el archivo twikidraw.jar de http://debian.jones.dk/auryn/pool-all/official/moin/twikidraw/ y copiarlo en htdocs/applets/~TWikiDrawPlugin. Luego reiniciar el servidor, cerrar el navegador y volver a entrar. En la versión moin-desktop ya viene por defecto.

Para su utilización en una página de Moin, se requiere incluir la siguiente línea:
{{{
drawing:nombre-imagen
}}}

!! ~EmbedObject

Este macro permite visualizar algunos archivos multimedia en una página en moin. Para su instalación se debe descargar el archivo ~EmbedObject.py de http://moinmoin.wikiwikiweb.de/MacroMarket para Moin 1.5. Luego copiar el archivo en el directorio data/plugin/macro

!! ~MonthCalendar y ~PageComment2

~MonthCalendar: Para versiones superiores o iguales a la 1.3.5 viene incluido, para versiones inferiores hay que descargarlo. Para la Versión 1.3.4 se descarga de http://moinmoin.wikiwikiweb.de/MacroMarket, el archivo se llama: ~MonthCalendar-moin13.py

~PageComment2: Se descargarlos de: http://moinmoin.wikiwikiweb.de/MacroMarket/PageComment2. La última versión es: ~PageComment2-0981.py

Luego se copian en el directorio data/plugin/macro, se le cambia el nombre a ~MonthCalendar.py y ~PageComment2.py y se les da permisos de lectura y ejecución a todos los usuarios.

Forma de uso de ~MonthCalendar:
{{{
[[MonthCalendar(,,)]]
}}}

Forma de uso de ~PageComment2 para que usuarios anónimos dejen comentarios en una página de moin:
{{{
[[PageComment2(markup=1, commentfirst=1, articleview=1)]]
}}}


! Más información:
* http://www.elmorrocotudo.cl/admin/render/noticia/6132
* http://moinmo.in/DesktopEdition (versión 1.5.9 en adelante)
* http://moinmoin.wikiwikiweb.de/DesktopEdition (versión 1.5.5 hacia atrás)
* http://moinmo.in/MoinMoinQuestions/ConfigFiles

 
{{{
$ mount chokco10k-2005-10-22.iso /media/cdrom -o loop
}}}
Moodle es un sistema de gestión de cursos libre, basado en las ideas del constructivismo en pedagogía. Más información en: http://es.wikipedia.org/wiki/Moodle

No se realizará la instalación desde la paquetería de debian para poder utilizar la última versión de moodle.

!1. Prerrequisitos
* [[Apache]]
* [[MySQL]]
* [[phpMyAdmin]]
* ~PHP5 y otros complementos.

!2 Preparación en el Servidor
Como Moodle 2 requiere PHP 5.2.8 en adelante, pero Debian Lenny tiene en sus repositorios PHP 5.2.6, se requiere adicionar otros repositorios (/etc/apt/sources.list) desde donde se pueda hacer la instalación de un PHP más reciente, como por ejemplo:
{{{
deb http://packages.dotdeb.org/ lenny all
}}}
Instale los siguientes paquetes y reiniciar el servidor web:
{{{
# apt-get install php5 php5-curl php5-xmlrpc php5-gd php5-intl
# /etc/init.d/apache restart
}}}
Descargue la última versión de moodle, compatible con la versión de PHP y ~MySQL del servdor, de http://download.moodle.org/ y descomprima en el directorio /var/www
{{{
# cd /var/www
# wget http://download.moodle.org/stable19/moodle-weekly-19.tgz
# tar -xzf moodle-weekly-19.tgz
}}}
Luego se debe crear el directorio donde moodle pueda guardar los archivos que los usuarios suben, y que no debe se accesible desde la web. Se recomienda cambiar el nombre moodledata por seguridad.
{{{
# cd /var
# mkdir moodledata
# chown www-data moodledata
# chmod 700 moodledata
}}}
Si por restricciones en el acceso al servidor, se debe crear el directorio de datos de moodle dentro del directorios accesible desde la web, se recomienda crear un archivo .htaccess con los siguientes parámetros:
{{{
deny from all
}}}

!3. Creación del usuario y base de datos
Se puede realizar por línea de comandos o a través de la aplicación web phpMyAdmin. El nombre de la base de datos, el usuario y la contraseña deben ser diferentes a los valores por defecto.

!4. Instalación
Luego ejecute el script de instalación a través de la dirección web donde funcionará el sitio: http://polux.unicauca.edu.co/moodle y complete la información que se la va a solicitar:
{{{
Lengua de instalación: Español

Dirección Web: http://polux.unicauca.edu.co/moodle
Directorio Moodle: /var/www/moodle
Directorio de Datos: /var/moodledata

Tipo: MySQL
Servidor: localhost
(es conveniente que los siguientes datos se cambien por seguridad)
Base de Datos: moodle
Usuario: moodle
Contraseña: moodle

Revisión de los componentes requeridos en el sistema
Descarga del archivo de idioma: Español
Creación del archivo config.php en la raíz del directorio de moodle

Aceptación de la licencia
Creación de las tablas en la base de datos
Instalando el módulo de tablas
Ajustando tablas de plugins
Actualizando la base de datos
Configurando tablas de bloques
Ajustando tablas de plugins

Crear la cuenta de administrador: nombre, correo, etc.
Portada: Nombre del sitio, descripción, autenticación para autoregistro
}}}

!5. Configuración del Cron
Agregar la siguiente línea en el /etc/crontab para que periódicamente se este revisando las tareas a revisar, como por ejemplo el envío de correos.
{{{
*/5 * * * * root wget -q -O /dev/null http://localhost/moodle/admin/cron.php
}}}

!6. Problemas
!! Problemas con Librerías
Si se presentan los siguientes errores:
* Se recomienda encarecidamente instalar la librería opcional Curl a fin de posibilitar la funcionalidad de la Red Moodle.
* Instalar la extensión xmlrpc opcional es útil para la funcionalidad de la Red Moodle.

''Solución 1:''
Puede ser que en el momento de instalar los paquetes ''php5-curl'' y ''php5-xmlrpc'' no se haya reiniciado el servicio web para que tome las nuevas extensiones de PHP, así que:
{{{
# /etc/init.d/apache2 restart
}}}

''Solución 2:''
Editar el archivo ''/etc/php5/apache2/php.ini'' y añadir después de "extension_dir":
{{{
; Directory in which the loadable extensions (modules) reside.
; extension_dir = "./"
extension = curl.ini
extension = xmlrpc.ini
}}}

Reiniciar el servicio web:
{{{
 # /etc/init.d/apache2 restart
}}}

!! Problemas con Contraseñas
Si se tiene acceso a la base de datos, se puede sobre-escribir la contraseña, para ello se debe generar el código md5 de una palabra o cadena de caracteres conocida (en el siguiente ejemplo es moodle), luego entrar a la base de datos de moodle, buscar la tabla mdl_user y remplazar el campo password de los usuarios. Por línea de comandos:
{{{
# mysql -u moodle -p
use moodle;
select * from mdl_user where username="admin";
update mdl_user set password="55562db943cf11b7ebd053a663ce44d3" where username="admin";
}}}

!! Dirección IP Variable
Para que Moodle funcione con cualquier dirección IP del servidor, sin que se tenga que estar cambiando el archivo de configuración, se debe especificar el dominio o ip del servidor, de la siguiente forma en el archivo {{{config.php}}}:
{{{
$CFG->wwwroot = 'http://'.$_SERVER['HTTP_HOST'].'/cursos';
}}}

!7 Configuración Web
Mirar las opciones de configuración del administrador y hacer los cambios que corresponda. Algunos de los cambios sugeridos son:

!! 7.1 reCAPTCHA
Primero debe crear una cuenta en http://recaptcha.net para el dominio donde se encuentra instalado moodle. Luego de introduce la llave privada y la publica en el menú de administración: Usuario > Autenticación > Gestiona Autenticación

En Abril de 2011 se realizo un cambio en los servidores del servicio debido a la compra de la empresa por parte de Google. Por este motivo, para Moodle 1.9 se requiere realizar el siguiente cambio en el archivo {{{lib/recaptchalib.php}}}: {{{define("RECAPTCHA_API_SECURE_SERVER", "https://api-secure.recaptcha.net");}}} por {{{define("RECAPTCHA_API_SECURE_SERVER", "https://www.google.com/recaptcha/api");}}}. La versión 2 de Moodle ya tiene este cambio.

Más información en: http://moodle.org/mod/forum/discuss.php?d=174242

!! 7.2 Ubicación IP
Para activar la función de ubicar las direcciones IP desde la que se accede al sitio se recomienda descargar un archivo de http://www.maxmind.com/ y configurar un dominio en http://code.google.com/apis/maps/signup.html. Esto se configura desde el menú de administración: Ubicación > Ajuste de Ubicación

!! 7.3 Idioma de Interfase
La instalación del paquete de idioma se realiza en el menú de administración: Idioma > Paquete de Idioma. 

!! 7.4 Quitar PHP display_error
Moodle recomienda que no esta habilitado la opción display_errors de PHP, para quitar esto, se debe ir al archivo /etc/php5/apache2/php.ini y colocar el parámetro Off en esta variable, luego reiniciar el servidor web.

!! 7.5 Revisión Antivirus
Si el servidor soporta esto, colocar la ruta. Ejemplo: /usr/bin/clamscan 



Munin es una herramienta para la generación de estadísticas históricas sobre variables relacionadas con el desempeño de los equipos, el uso de los servicios, el tráfico de red, entre otras. Esta escrito en Perl y utiliza ~RRDTool para el almacenamiento de la información. Esta herramienta es una evolución de MRTG, además de ser más sencilla y consumir menos recursos que Cacti y Zabbix. 
Más información sobre Munin:
* http://munin.projects.linpro.no/
* http://www.howtoforge.com/monitoring-multiple-systems-with-munin-debian-etch
Más información sobre otras herramientas para la generación de estadísticas:
* http://oss.oetiker.ch/mrtg/
* http://www.cacti.net/
* http://www.zabbix.com/

!1. Prerequisitos
* [[Apache|servidor.html#Apache]]

!2. Instalación y Configuración en el Servidor
Munin requiere de dos módulos para funcionar: el servidor y los nodos. Los nodos recogen la información y es enviada al servidor para su procesamiento y visualización, sin embargo, el equipo donde funcionará el servidor debe tener instalado los dos componentes:
{{{
# apt-get install munin munin-node munin-plugins-extra
}}}
Después de la instalación de los paquetes se debe editar el archivo /etc/munin/munin.conf para especificar como mínimo el directorio, visible a través de la web, en donde se tendrá acceso a las estadísticas (Se sugiere que esta ruta este protegida con contraseña y que el trafico vaya sobre https) y el nombre con el que se visualizará y la dirección local del servidor. Por el momento no se tocan los demás parámetros.
{{{
htmldir /var/www/muninserver

[polux]
    address 127.0.0.1
    use_node_name yes
}}}
Cómo se cambio la ruta donde se generarán las páginas web de las estadísticas, se debe crear el directorio, borrar el que Munin crea por defecto y reiniciar el servicio:
{{{
# mkdir /var/www/muninserver
# chown munin.munin /var/www/muninserver
# rm -fr /var/www/munin
}}}
Adicionalmente, y por cuestión de seguridad, en el archivo /etc/munin/munin-node.conf que contiene los parámetros de configuración del nodo en el servidor (y que trabaja en el puerto TCP 4949), se debe restringir el acceso a la información desde la dirección local:
{{{
# Which address to bind to;
#host *
host 127.0.0.1
}}}
Para que los cambios tengan efecto, se debe reiniciar el servicio:
{{{
# /etc/init.d/munin-node restart
}}}
Después de un par de horas se podrán ver las estadísticas en http://polux/muninserver
Las estadśticas que genera por defecto son:
* Disco: Uso de Disco (en porcentaje); Uso de Inode (en porcentaje) e ~IOStat
* Exim: Correos en Cola, Desempeño (procesamiento de correos por segundo)
* Red (por interface): Errores, Trafico
* Procesos: Rata de Forks, Número de procesos
* Sistema: Uso de CPU, Entropía disponible, Interrupciones, Carga promedio, Uso de memoria, Uso de archivos, Uso de Inodos, Uso de Swap
La actualización de la información se realiza cada 5 minutos.

!3. Monitorear otros servicios
Cada variable que Munin gráfica se encuentra configurada como plugin. Los plugins que se configuran por defecto en el proceso de instalación se encuentran relacionadas en {{{/etc/munin/plugins}}}, sin embargo, la lista de plugins disponibles se encuentra en {{{/usr/share/munin/plugins}}}. 

Con el comando {{{munin-node-configure}}} se puede conocer los plugin disponibles, los que están siendo usados y los que no, y si se adiciona la opción {{{--suggest}}} se puede conocer los plugins que presentan algún problema para su uso. Al ejecutar el plugin con la opción {{{autoconf}}} se puede saber el estado de funcionamiento, por ejemplo:
{{{
$ /usr/share/munin/plugins/apache_accesses autoconf
no (no apache server-status or ExtendedStatus missing on ports 80)
}}}
o
{{{
$ /usr/share/munin/plugins/apache_processes autoconf
yes
}}}
Para adicionar un nuevo plugin, sólo se debe crear un enlace simbólico del plugin en {{{/etc/munin/plugins}}} y reiniciar el servicio {{{munin-node}}}. Algunos plugins adicionales que pueden ser de interés són: 
* apache_accesses, apache_processes, apache_volume. Estos plugins requieren que apache tanga habilitado y configurado el modulo status con la opción ~ExtendedStatus.
* mysql_bytes, mysql_queries, mysql_threads
* munin_graph, munin_update
* port. En el momento de crear el enlace simbólico se debe especificar el puerto.
* ntp_offset, ntp_states
* apt
* netstat 
* uptime
* users
* df_abs

!4. Solución de Problemas
* Si los plugin de apache no funcionan y generar el mensaje de error ''LWP::~UserAgent'', es porque hace falta instalar el paquete ''libwww-perl''.
* La base de datos de cada variable monitoreada se almacena en archivos independientes en: /var/lib/munin/castor
* Para que funcione el plugin spamstat se requiere agregar lo siguiente en el archivo /etc/munin/plugin-conf.d/munin-node
{{{
[spamstats]
group adm
env.logfile mail.log
}}}

!5. Varios
Munin permite la conexión con nodos remotos para la extracción de los datos y su posterior visualización. Además estas conexiones se pueden realizar de forma encriptada y con mecanismos de autenticación si la red por la que pasa la información no es segura.


~MySQL es un sistema de gestión de base de datos relacional, multihilo y multiusuario que funciona en el puerto TCP 3306. Más información en: http://es.wikipedia.org/wiki/MySQL

!1. Instalación
{{{
# apt-get install mysql-server
}}}
Algunas de las dependencias que se instalan son: mysql-client y mysql-common

Revisar que el servicio arranque automáticamente con el encendido del servidor:
{{{
# sysv-rc-conf
}}}
Después de realizar cambios importantes de configuración se debe reiniciar el servicio.

!2. Establecer Contraseña de Root
Opción 1:
{{{
$ mysqladmin -u root -h localhost password (mypassword)
}}}
Después de lo cual se recomienda borrar el historial de comandos de bash:
{{{
$ history -c
}}}

Opción 2:
{{{
$ mysql -u root
> USE mysql;
> SET PASSWORD FOR root@localhost=PASSWORD('tu contraseña');
> FLUSH PRIVILEGES;
}}}
Los comandos que se utilizan en ~MySQL por línea de comandos, quedan almacenado en el archivo ~/.mysql_history, por lo tanto, este archivo se debe borrar por seguridad. Otra opción es crear un enlace simbólico:
{{{
$ rm ~/.mysql_history
$ ln -s /dev/null ~/.mysql_history
}}}

!3. Borrar usuarios innecesario 
Por seguridad, el acceso del usuario root debe ser sólo local, razón por la cual se deben borrar los usuarios root que posibilita el acceso remoto.:
{{{
$ mysql -u root -p
(contraseña)
> use mysql;
> select * from user;
> drop user root@127.0.0.1;
> drop user root@polux;
> flush privileges;
}}}

!4. Cambio de usuario root
Por seguridad es conveniente que el usuario con privilegios no sea el root. Para ello se hace lo siguiente:
{{{
$ mysql -u root -p
(contraseña)
> use mysql;
> update user set user="nuevouser" where user="root";
> flush privileges;
}}}

!5. Cambio de contraseñas
{{{
$ mysqladmin -u usuario -p oldpassword newpass
}}}
o
{{{
$ mysql -u root -p
(contraseña)
> use mysql;
> update user set password=PASSWORD(”NUEVOPASSWORD”) where User=’usuario’;
> flush privileges;
}}}

!6. Backups y Recuperación
Backup de una sola base de datos en el mismo equipo:
{{{
# mysqldump -u (usuario) -p (base de datos) > fichero.sql
}}}
Restauración de una base de datos en el mismo equipo:
{{{
# mysql -u (usuario) -p  (base de datos) < fichero.sql
}}}
Sacar un backup de una base de datos desde otro equipo:
{{{
$ mysqldump -u nombreusuario -p password -h nombredelhost nombrebasededatos > fichero.sql
}}}
Este (fichero.sql) almacenará toda la información ( estructura y datos de la base de datos) necesaria para crearla de nuevo. Atención: Esto no incluye los usuarios y los permisos ( eso es tarea del administrador de la base de datos)
Para restaurar los datos desde otro equipo:
{{{
mysql -u nombreusuario -p password -h nombredelhost nombrebasededatos < fichero.sql
}}}


Más información en:
* http://dev.mysql.com/doc/refman/5.0/es/disaster-prevention.html
* http://rm-rf.es/backups-mysql-con-mysqldump/

!7. Comandos básicos de trabajo con ~MySQL por línea de comandos
* $ mysql -u [usuario] -p
Información:
* show databases; - Listar todas las bases de datos.
* use [nombre_base_de_datos]; - Selecionar una base de datos para explorar
* show tables; - Listar todas las tablas de una base de datos.
* describe [table]; - Muestra la estructura de una tabla.
Manipulación:
* drop database [nombre_base_de_datos]; - Borrar una base de datos
* create database [nombre_base_de_datos]; - Crear una base de datos
* drop table [table]; - Elimina la tabla, incluyendo registros y estructura.
* truncate table [table]; - Elimina los registros, pero mantiene la estructura de la tabla.
* rename table [table] to [nuevo nombre de tabla]; - Renombra una tabla.
* grant all on [database].* to [nombre_usuario]@[localhost|'%'] identified by '[password_usuario]'; - Crear un usuario con privilegios sólo sobre una base de datos existente
* drop user [nombre_usuario]@localhost; - Borrar un usuario
Algunos comandos útiles:
* select * from [table] limit [numero]; - Muestra los registros desde el 1 hasta el número.
* Ej. select * from tabla limit 10; - Muestra los 10 primeros registros.
* select * from [table] limit [numero inicio],[numero]; - Muestra los registros desde el número de inicio hasta número inicio + número.
* Ej. select * from tabla limit 11,10; - Muestra desde registro 11 hasta el 20.
Bases de datos en consola
* $ mysqladmin -u -p create - crear base de datos.
* $ mysqladmin -u -p drop - borrar la base de datos.
* $ mysqladmin -u root -p proc - listar procesos en ejecución.
* $ mysqladmin -u root -p -i 5 status - verificar status cada 5 segundos.
* $ mysqldump –opt -u -h -p > /path/to/file - Exportar base de datos a fichero.
* $ mysqldump –opt -u -h –all-databases -p > /path/to/file - Exportar TODAS las bases de datos a fichero.
* $ mysql -h -u -p
* $ mysqlcheck -o -u root -p –all-databases - Optimizar las bases de datos.
Verificación y reparación de bases de datos erroneas:
* check table [table]; - Verificar tabla.
* repair table [table]; - Reparar tabla rota.

Información tomada de:
* http://www.badopi.org/node/738
* http://eldespachodelosjorges.blogspot.com/2008/05/comandos-basicos-en-mysql.html
* http://www.sorgonet.com/linux/mysql/index_es.php
* http://www.pedroventura.com/blog_programacion/2010/03/01/configurando-y-optimizando-un-servidor-my-cnf/
* http://www.xtec.net/~acastan/textos/Administracion%20de%20MySQL.html

!8. Resolución de Problemas

!!! Directorio donde se encuentran las bases de datos
El directorio por defecto donde se encuentran las bases de datos, es {{{/var/lib/mysql}}} y los permisos de este directorio son 700 con usuario y grupo de mysql. Si quiere cambiar la ruta de este directorio, debe hacer lo siguiente:
# Cambiar la ruta en el archivo {{{/etc/apparmor.d/usr.sbin.mysqld}}} y reiniciar el servicio {{{/etc/init.d/apparmor start}}}.
# Cambiar la ruta en el archivo {{{/etc/mysql/my.cnf}}} y reiniciar el servicio {{{/etc/init.d/mysql start}}}
Network Time Protocol (NTP) es un protocolo de internet para sincronizar los relojes de los equipos de red usando paquetes UDP y el puerto 123. Más información en:
* http://es.wikipedia.org/wiki/NTP
* http://www.ntp.org/
* http://ftp.cl.debian.org/man-es/ntp.html

!1. Prerrequisitos:
Tener la zona configurada de forma adecuada. Ver: [[SxBase]]

!2. Instalación
{{{
apt-get install ntp
}}}
Después de unos 5 o 10 minutos se puede verificar el funcionamiento con:
{{{
$ ntptrace
localhost: stratum 3, offset 0.000044, synch distance 1.16098
debian.ciencias.uchile.cl: stratum 2, offset 0.000032, synch distance 0.16200
ntp0.ja.net: stratum 1, offset -0.023523, synch distance 0.00212, refid 'MSF'
}}}
Esto indica que el computador está sincronizado y a la vez se ha transformado en un servidor ternario (stratum 3).

Si ejecutando el comando ntptrace aparece el mensaje,
{{{
$ ntptrace
localhost: stratum 16, offset 0.000025, synch distance 0.00002
0.0.0.0: *Not Synchronized*
}}}
Todavía no hay sincronización.

Más información en:
* http://www.arcert.gov.ar/webs/tips/NTPv1.0.pdf
NTOP (Network TOP) es una herramienta que genera estadísticas en tiempo real del tráfico en una red. __Tiene un alto consumo de recursos computacionales, que además en proporcional al tráfico de la red, por lo tanto en equipos de bajas características se usa sólo en periodos de tiempo específicos para que no lo bloquee__. Más información en: http://www.ntop.org/

!1. Instalación
{{{
# apt-get install ntop graphviz gsfonts-x11
}}}
Después de tener instalada la aplicación y los complementos necesarios para la generación de los mapas, se debe establecer la contraseña de administración:
{{{
# ntop --set-admin-password
Please enter the password for the admin user: ********
}}}
Después de verificar que la interfase de red que se quiere monitorear esta en el archivo /var/lib/ntop/init.cfg, se debe iniciar el servicio:
{{{
# /etc/init.d/ntop start
}}}
El ingreso por defecto se realiza a través de la dirección http://polux.unicauca.edu.co:3000. Cualquiera puede ver las estadísticas, pero sólo con el usuario admin y la contraseña se pueden realizar cambios en la configuración de Ntop.
Se sugiere indagar cómo restringir la visualización de las estadísticas a usuarios específicos y el envío de la información a través de una conexión http segura. Para ello mirar la documentación: http://www.ntop.org/ntop-man.html
Nagios es un herramienta para verificar el estado de equipos y servicios en una red y generar alertas. Lo ideal es que Nagios este configurado en un equipo destinado exclusivamente para tareas de administración. Más información en: 
* http://www.nagios.org/docs/
* http://nagios.linuxbaja.org/node/17

!1. Prerequisitos
* [[Apache|InstalacionServidor.html#Apache]]
* MTA (Ej: [[Exim|InstalacionServidor.html#Exim]])

!2. Instalación
{{{
# apt-get install nagios3 libgd2-xpm libgd-gd2-perl libgdchart-gd2-xpm
}}}
La instalación de Nagios a través de los paquetes de Debian incluye una configuración por defecto que permite el monitoreo del espacio en disco, usuarios, procesos, carga, servicio http y ssh para el equipo donde se instala. Para completar esta instalación sólo se requiere dos cosas:
* Establecer una contraseña para el usuario administrador:
{{{
# cd /etc/nagios3
# htpasswd -c htpasswd.users nagiosadmin
}}}
* Ingresar a través de la dirección web: http://polux.unicauca.edu.co/nagios3

!3. Configuración del Acceso Web
Para que el acceso a esta aplicación web se realice sólo por https, el contenido del archivo /etc/apache2/conf.d/nagios3.conf debe colocarse en el archivo /etc/apache2/sites-avaibles/default-ssl. Además es conveniente:
* Cambiar el lugar y el nombre del archivo donde se realizará el almacenamiento del usuario y la contraseña.
* Cambiar el usuario y la contraseña
{{{
        ScriptAlias /cgi-bin/nagios3 /usr/lib/cgi-bin/nagios3
        ScriptAlias /nagios3/cgi-bin /usr/lib/cgi-bin/nagios3
        Alias /nagios3/stylesheets /etc/nagios3/stylesheets
        Alias /nagios3 /usr/share/nagios3/htdocs
        <DirectoryMatch (/usr/share/nagios3/htdocs|/usr/lib/cgi-bin/nagios3)>
                Options FollowSymLinks
                DirectoryIndex index.html
                AllowOverride AuthConfig
                Order Allow,Deny
                Allow From All
                AuthName "Directorio Restringido"
                AuthType Basic
                AuthUserFile /etc/apache2/passwd            
                require user root
        </DirectoryMatch>
}}}
El cambio del usuario también se debe hacer en los siguientes parámetros del archivo /etc/nagios3/cgi.cfg
{{{
authorized_for_system_information=
authorized_for_configuration_information=
authorized_for_system_commands=
authorized_for_all_services=
authorized_for_all_hosts=
authorized_for_all_service_commands=
authorized_for_all_host_commands=
}}}
Después de esto se puede borrar los archivos de configuración y contraseña inicial y reiniciar apache:
{{{
# rm /etc/apache2/conf.d/nagios3.conf
# rm /etc/nagios3/htpasswd.users
# /etc/init.d/apache2 restart
}}}

!4. Configuración de Nagios
Para que Nagios pueda hacer su trabajo de monitoreo de equipos y servicios sobre una red, se debe especificar como mínimo 3 aspectos:
# Las personas de contacto y los grupos que forman estas personas
# Los equipos que se van a monitorear y los grupos en los que se reúnen dichos equipos
# Los servicios que se van a monitorear por equipo y los grupos de servicios
La definición de estos objetos se puede realizar en un único archivo, en algunos que reúna la definición de varios de ellos o en un archivo para cada definición. Para este caso en particular se realizará en tres archivos: uno para los contactos y grupo de contactos; otro para los equipos, grupo de equipos y los servicios; y otro para la definición de los periodos de tiempo.
* /etc/nagios3/conf.d/contacts.cfg
{{{
define contact{
        contact_name                    root
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email
        email                           root@localhost
        can_submit_commands             1
        }

define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 root
        }
}}}
* /etc/nagios3/conf.d/tiempo.cfg
{{{
define timeperiod {
        timeperiod_name 24x7
        alias           24 Hours A Day, 7 Days A Week
        sunday          00:00-24:00
        monday          00:00-24:00
        tuesday         00:00-24:00
        wednesday       00:00-24:00
        thursday        00:00-24:00
        friday          00:00-24:00
        saturday        00:00-24:00
        }
}}}
* /etc/nagios3/conf.d/host.cfg
{{{
define hostgroup {
                hostgroup_name  servidores
                alias           Debian GNU/Linux Servers
                members         polux
        }

define host {
        host_name                       polux
        alias                           polux
        address                         127.0.0.1
        check_command                   check-host-alive
        max_check_attempts              10
        check_period                    24x7
        process_perf_data               1
        retain_nonstatus_information    1
        contact_groups                  admins
        notification_interval           0
        notification_period             24x7
        notification_options            d,u,r
        }

define service {
        name                            generic-service ; The 'name' of this service template
        host_name                       polux
        active_checks_enabled           1       ; Active service checks are enabled
        passive_checks_enabled          1       ; Passive service checks are enabled/accepted
        parallelize_check               1       ; Active service checks should be parallelized (disabli$
        obsess_over_service             1       ; We should obsess over this service (if necessary)
        check_freshness                 0       ; Default is to NOT check service 'freshness'
        notifications_enabled           1       ; Service notifications are enabled
        event_handler_enabled           1       ; Service event handler is enabled
        flap_detection_enabled          1       ; Flap detection is enabled
        failure_prediction_enabled      1       ; Failure prediction is enabled
        process_perf_data               1       ; Process performance data
        retain_status_information       1       ; Retain status information across program restarts
        retain_nonstatus_information    1       ; Retain non-status information across program restarts
                notification_interval           0
                is_volatile                     0
                check_period                    24x7
                normal_check_interval           5
                retry_check_interval            1
                max_check_attempts              4
                notification_period             24x7
                notification_options            w,u,c,r
                contact_groups                  admins
        register                        0       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVIC$
        }

define service {
        use                             generic-service         ; Name of service template to use
        service_description             Espacio en Disco
        check_command                   check_all_disks!20%!10%
        }

define service {
        use                             generic-service         ; Name of service template to use
        service_description             Usuarios Conectados
        check_command                   check_users!5!10
        }

define service {
        use                             generic-service         ; Name of service template to use
        service_description             Total Procesos
        check_command                   check_procs!250!400
        }
define service {
        use                             generic-service         ; Name of service template to use
        service_description             Carga del Sistema
        check_command                   check_load!5.0!4.0!3.0!10.0!6.0!4.0
        }

define service {
        use                             generic-service         ; Name of service template to use
        service_description             Correos en Cola
        check_command                   check_mailq_exim!5!20
        }

define service {
        use                             generic-service         ; Name of service template to use
        service_description             Actualizacion de Paquetes
        check_command                   check_apt
        }

define service {
        use                             generic-service         ; Name of service template to use
        service_description             Servicio DNS
        check_command                   check_dns
        }

define service {
        use                             generic-service
        service_description             HTTP
        check_command                   check_http
        notification_interval           0 ; set > 0 if you want to be renotified
}

define service {
        use                             generic-service
        service_description             SSH
        check_command                   check_ssh_port!2222
        notification_interval           0 ; set > 0 if you want to be renotified
}

define service {
        use                             generic-service
        service_description             MySQL
        check_command                   check_mysql
        notification_interval           0 ; set > 0 if you want to be renotified
}

define service {
        use                             generic-service
        service_description             SMTP
        check_command                   check_smtp
        notification_interval           0 ; set > 0 if you want to be renotified
}
}}}
Adicionalmente, para ejecutar comandos sobre el servidor desde la interfaz web de Nagios, se debe hacer lo siguiente:
# Habilitar la opción check_external_commands=1 en /etc/nagios3/nagios.cfg
# Debido a un bug de Debian Lenny, se debe verificar (y establecer si es del caso) los permisos de los siguientes directorios y archivos:
{{{
drwxr-xr-x 5 nagios nagios   4096 2008-04-30 14:46 /var/lib/nagios3
drwxr-x--- 2 nagios nagios   4096 2008-05-01 16:43 /var/lib/nagios3/rw
prw-rw---- 1 nagios nagios      0 2008-05-01 16:41 /var/lib/nagios3/rw/nagios.cmd
}}}
Después de esto se prueba la configuración realizada y se reinicia el servicio:
{{{
# nagios3 -v /etc/nagios3/nagios.cfg
# /etc/init.d/nagios3 restart
}}}

Conversión de OOXML a ODF en GNU/Linux usando linea de comandos. ~OpenOffice3 tiene soporte para la lectura de OOXML y para guardarlo en otro formato.

1. Asegúrese que este instalado el paquete rpm

2. Descargue el archivo para i386: http://download.go-oo.org/red-carpet/ooo-680/sled-10-sp-i586/odf-converter-1.1-7.i586.rpm

3. Descomprima el paquete rpm con: 
{{{
# rpm2cpio odf-converter*rpm | cpio -ivd
}}}

4. Copie el archivo binario en un lugar donde sea accesible para cualquier usuario:
{{{
# cp usr/lib/ooo-2.0/program/OdfConverter /usr/bin
}}}

Listo! haga una prueba:
{{{
$ OdfConvert /i example.docx
}}}

Si le sale el error:
{{{
OdfConverter: error while loading shared libraries: libtiff.so.3: cannot open shared object file: No such file or directory
}}}

y al buscar el archivo {{{libtiff.so}}} (puede ser con el comando {{{locate}}} o {{{find}}}) resulta que se encuentra el archivo {{{libtiff.so.4}}}, lo que debe hacer es crear un enlace simbólico:
{{{
# ln -s /usr/lib/libtiff.so.4 /usr/lib/libtiff.so.3 
}}}

Más información en:
* http://www.oooninja.com/2008/01/convert-openxml-docx-etc-in-linux-using.html




Un webmail es un cliente de correo electrónico a través de una interfaz web. ~OpenWebmail tiene la característica adicional de permitir el subida y descarga de archivos en la cuenta del usuario en el servidor. Esta aplicación fue parte de los paquetes de Debian, pero ahora se debe instalar por separado. Más información en: http://openwebmail.org

!1. Prerrequisitos
* [[Apache]]
* Perl
* MTA (Ej: [[Exim]])

!2. Instalación
Primero las dependencias:
{{{
# apt-get install libcgi-pm-perl libmime-base64-urlsafe-perl libnet1 libdigest-perl libdigest-md5-file-perl libtext-iconv-perl libcompress-zlib-perl speedy-cgi-perl perl-suid antiword imagemagick tnef lsof libnet-ldap-perl libauthen-pam-perl libpg-perl libmd5-perl wwwconfig-common libconvert-asn1-perl
}}}
Luego descargar la última versión para debian de http://openwebmail.org, e instalar:
{{{
# wget http://openwebmail.org/openwebmail/download/debian/owm2.53-2.deb
# dpkg -i owm2.53-2.deb
}}}

!3. Configuración
!!3.1 Configuración de apache
Editamos /etc/apache2/sites-available/default para que todo el trafico se vaya por http seguro:
{{{
RewriteRule ^/webmail   https://%{HTTP_HOST}/webmail [R,L]
}}}
Editamos /etc/apache2/sites-available/default-ssl para que ~OpenWebmail utilice su propia ruta y oculte el uso de cgi-bin:
{{{
        Alias /webmail /usr/lib/cgi-bin/openwebmail
        <Directory /usr/lib/cgi-bin/openwebmail>
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                AddHandler cgi-script .pl
                Order allow,deny
                Allow from all
                <IfModule mod_dir.c>
                  DirectoryIndex openwebmail.pl
                </IfModule>
        </Directory>
}}}
El uso de Alias en vez de ~ScriptAlias se hace para poder usar el parámetro ~DirectoryIndex, pero al hacer esto se debe agregar el parámetro ~AddHandler.

Si el directorio de ''~DocumentRoot'' no es por defecto /var/www, entonces se debe especificar un Alias para los archivos web (páginas html, icons) para cada unas de las aplicaciones web instaladas:
{{{
Alias /openwebmail /var/www/openwebmail
        <Directory /var/www/openwebmail>
                Options FollowSymLinks
                AllowOverride None
        </Directory>
}}}

!!3.2 Configuración de ~OpenWemail
Editar el archivo /etc/openwebmail/openwebmail.conf, comentando todas las opciones para que no sobreescriba la configuración que se realizara del archivo /etc/openwebmail/defaults/openwebmail.conf. En este último archivo, realizar los siguientes cambios
{{{
domainnames         polux
ow_cgidir               /usr/lib/cgi-bin/openwebmail
ow_cgiurl               /webmail
ow_htmldir              /var/www/openwebmail
ow_htmlurl              /openwebmail

enable_viruscheck               yes
viruscheck_pipe                 /usr/bin/clamdscan --mbox --disable-summary --stdout -
viruscheck_source_allowed       all

enable_spamcheck                yes
spamcheck_pipe                  /usr/bin/spamc -c -x -t 60 -u @@@USERNAME@@@
spamcheck_source_allowed        all

enable_learnspam        yes
learnspam_pipe          /usr/bin/sa-learn --spam
learnham_pipe           /usr/bin/sa-learn --ham

default_locale                  es_AR.ISO8859-1 (La codificación debe corresponder a la escogida para el sistema operativo. Lo ideal es trabajar con codificación UTF-8, pero algunos servidores de correo viejos no reciben bien los mensajes)
default_timeoffset              -0500
}}}

Ingresar con: http://polux/webmail

! Permisos de archivos
   ~/openwebmail*.pl            - owner=root, group=mail, mode=4755
   ~/vacation.pl                - owner=root, group=mail, mode=0755
   ~/etc                        - owner=root, group=mail, mode=755
   ~/etc/sessions               - owner=root, group=mail, mode=771
   ~/etc/users                  - owner=root, group=mail, mode=771

   /var/log/openwebmail.log     - owner=root, group=mail, mode=660




! Ordenar Archivos
Por ''fecha'' (opción t)
{{{
$ ls -lt      (el más reciente de primero)
$ ls -ltr     (el más antiguo de primero)
}}}
Por ''hora'' (opción u)
{{{
$ ls -lu      (el más reciente de primero)
$ ls -lur     
}}}
Por ''tamaño'' (opción S)
{{{
$ ls -lS     (el más grande de primero)
$ ls -lSr    (el más pequeño de primero)
}}}
Por ''extensión'' (opción X)
{{{
$ ls -lX     (orden alfabético de la extensión)
$ ls -lXr    
}}}

! Ordenar Carpetas
Por ''tamaño'' (-s * muestra los directorios y -m es para que muestre los resultados en megas)
{{{
$ du --max-depth=1 | sort -n -r    (muestra archivos ocultos)
$ du -sm * | sort -nr                   (no muestra archivos ocultos)
}}}

! Ordenar búsquedas
Por ''tamaño''.  -ls es para que se muestren los resultados como una matriz, -2 archivos modificados hace menos de días o +2 para más de dos días; -n es para que asuma los datos como número y -k es para que ordene según la columna 7 (yamaño) de los datos que se le entregan
{{{
$ find . -name "*.mp4" -ls | sort -n -k 7
$ find . -size +100M -ls | sort -n -k 7
$ find . -mtime -2 -ls | sort -n -k 7
}}}



<!--{{{-->

<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'
};

config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");

merge(config.macros.option.types, {
	'pas': {
		elementType: "input",
		valueField: "value",
		eventName: "onkeyup",
		className: "pasOptionInput",
		typeValue: config.macros.option.passwordInputType,
		create: function(place,type,opt,className,desc) {
			// password field
			config.macros.option.genericCreate(place,'pas',opt,className,desc);
			// checkbox linked with this password "save this password on this computer"
			config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);			
			// text savePasswordCheckboxLabel
			place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
		},
		onChange: config.macros.option.genericOnChange
	}
});

merge(config.optionHandlers['chk'], {
	get: function(name) {
		// is there an option linked with this chk ?
		var opt = name.substr(3);
		if (config.options[opt]) 
			saveOptionCookie(opt);
		return config.options[name] ? "true" : "false";
	}
});

merge(config.optionHandlers, {
	'pas': {
 		get: function(name) {
			if (config.options["chk"+name]) {
				return encodeCookie(config.options[name].toString());
			} else {
				return "";
			}
		},
		set: function(name,value) {config.options[name] = decodeCookie(value);}
	}
});

// need to reload options to load passwordOptions
loadOptionsCookie();

/*
if (!config.options['pasPassword'])
	config.options['pasPassword'] = '';

merge(config.optionsDesc,{
		pasPassword: "Test password"
	});
*/
//}}}
* Descargar de : http://www.plogger.org/
* Crear usuario y BD en MySQL: [BD: plogger, User: plogeruser, Pass: plogger]
* Cambiar de usuario al directorio de la aplicación (/var/www/plogger/)
{{{
 # chown www-data:www-data plogger/ -R
}}}
* El browser ir a : http://polux.unicauca.edu.co/plogger/_install.php
 Y llenar los campos de la BD creada
 Gallery Name: galería defotos de ieRed 
 Your e-mail: doctorado@polux.unicauca.edu.co
* Después de hacer click en el botón de instalación nos da la clave del usuario "admin":
{{{
 Your username is admin and your password is `uhe4k`
}}}
* Revisar el e-mail que ingresaste, nos dará un link con la interfaz de administración de Plogger:
http://polux.unicauca.edu.co/plogger//admin/

* Los comentarios que se hagan en la plataforma, van al correo del admin ...

* PROBLEMAS: tiene fallos en el momento de enviar e-mails
* LINK: http://polux.unicauca.edu.co/plogger/

# Para que el Portátil actué como AP, se requiere verificar que la tarjeta de red inalámbrica y los drivers lo permitan. Para esto utilizamos el comando {{{iw list}}} y revisamos en la sección {{{Supported interface modes}}} que aparezca la opción: {{{AP}}}.
# Desconectar la red inalámbrica (si esta conectada).
# En el icono de Conexiones de red, crear/añadir una nueva Conexión Inalámbrica o ~Wi-Fi, con los siguientes datos:
## Nombre de la conexión.
## SSID
## Modo: Infraestructura
## Seleccionar la MAC de la tarjeta inalámbrica
# En la pestaña Seguridad, escoger el tipo de cifrado para la conexión inalámbrica.
# En la pestaña ~IPv4 escoger el método de asignación {{{Compartir con otros computadores}}} y aceptar los cambios.
# Editar el archivo de la conexión que aparece en el directorio {{{/etc/NetworkManager/system-connections}}}, remplazando {{{mode=infrastructure}}} por {{{mode=ap}}}
# Finalmente, en el icono de Conexiones de red, escoger la red creada. Si no aparece, entrar por la opción de: Conectar a una Red inalámbrica oculta.

Más información:
* http://ubuntuhandbook.org/index.php/2014/09/3-ways-create-wifi-hotspot-ubuntu/
* https://github.com/oblique/create_ap
* http://codewriteup.blogspot.com/2014/08/tested-working-set-up-wifi-hotspot-on.html
Revisar: 
# La capacidad de la memoria RAM.
# Las particiones del Disco Duro para hacer la instalación (o su planeación).
# Los Datos del Equipo y de la Red (Nombre, Dominio, Configuración de Red, etc.)
# El CD o la USB de Instalación de Ubuntu chequeado.
# El CD de Paquetes Extras o una buena conexión a Internet.
# El computador debe iniciar el arranque por la unidad de CD o USB.

! ps
Muestra información de los procesos que están activos en un equipo en un momento dado (como una foto instantánea).
{{{
$ ps -ef
}}}
Parámetros
-e  todos los procesos
-f   información ampliada


! top
Muestra información de los procesos que están activos en un equipo, actualizando la información periódicamente y generando resúmenes y promedios. Por defecto la ventana muestra dos secciones: la primera es un resumen del tiempo que lleva encendido, el número de usuarios, la carga, el uso del procesador y el uso de la memoria; la segunda sección muestra una lista de los procesos que están activos, indicando el usuario que lo ejecuto, el identificador, el uso que hace del procesador y de la memoria y el nombre. Esta lista de procesos se actualiza ordenando de acuerdo con el uso del procesador. 
{{{
$ top
}}}
Parámetros
-u usuario  muestra sólo los procesos iniciados por este usuario
-p n1,n2,n3...  muestra sólo los procesos indicados a través de su PID

Opciones Interactivas:
* u: usuario del que se quieren ver los procesos
* k: detener un proceso

Más información en:
* http://soullost.org/gnulinux/jugando-con-el-comando-top-gnulinux/
* http://man-wiki.net/index.php/1:top


! dstat
Generador de estadísticas por consola del uso del procesador, trafico de red, disco y memoria en un equipo, que remplaza a vmstat, iostat, netstat, nfsstat e ifstat. //Se instala con el paquete dstat//.
{{{
$ dstat
}}}
Más información:
* http://dag.wieers.com/home-made/dstat/


! uname
Muestra información del sistema. Con la opción -a muestra toda la información: nombre del kernel (-s), nombre del equipo (-n), versión del kernel (r), fecha de publicación del kernel (-v), arquitectura del procesador (-m), tipo de procesador (-p), tipo de sistema operativo (-o).
{{{
$ uname -a
}}}


! uptime
Muestra información sobre el funcionamiento del sistema: la hora, cuanto tiempo lleva prendido, cuantos usuarios están conectados y la carga del sistema.
{{{
$ uptime
}}}


! atop
//Se instala con el paquete atop//
* http://www.atcomputing.nl/Tools/atop/




!1. Verificar que la Tarjeta de Red haya sido cargada
{{{
$ dmesg |grep eth
}}}

!2. Asignación de IP y Puerta de Enlace temporal
{{{
# ifconfig eth0 172.16.130.138 netmask 255.255.0.0
# route add -net 0.0.0.0 gw 172.16.255.254
}}}
Para quitar esta asignación temporal
{{{
# ifconfig eth0 down
# route del -net 0.0.0.0 gw 172.16.255.254
}}}

!3. Asignación definitiva de IP y Puerta de enlace
Primero se debe bajar la interfaz:
{{{
# ifdown eth0
}}}
Luego se modifica el archivo de definición de interfaces de red:
{{{
# nano /etc/network/interfaces
}}}
{{{
auto eth0
iface eth0 inet static
        address 172.16.130.138
        netmask 255.255.0.0
        gateway 172.16.255.254
}}}
Finalmente se sube la interfaz:
{{{
# ifup eth0
}}}

!4. Configuración de Parámetros
* __/etc/hosts__
{{{
127.0.0.1       localhost.localdomain   localhost
127.0.0.1       polux.unicauca.edu.co   polux
}}}
* __/etc/resolv.conf__
{{{
search unicauca.edu.co
nameserver 172.16.255.200
nameserver 172.16.255.183
}}}
* __/etc/inetd.conf__: En Debian 5, comentar todos las líneas por defecto, a menos que haya algún servicios que se requiera. En Debian 7 no viene instalado por defecto.
* __/etc/motd*__: modificar mensaje de inicio de sesión. Por seguridad, se debe evitar suministrar información. 
* __/etc/issue*__: modificar mensaje anterior a la solicitud de login. Por seguridad, se debe evitar suministrar información.
Después de modificar este archivo, cambiar los permisos para que el sistema no lo cambie:
{{{
chmod 444 /var/run/motd
chmod 444 /etc/motd.tail
chmod 444 /etc/issue
chmod 444 /etc/issue.net
}}}




Script para restablecer los permisos en el /home a partir de la información del passwd
{{{
awk -F: 'BEGIN{print "#!/bin/sh"} {print "chown -R " $3 "." $4, $6}' /etc/passwd |grep "home" > a; chmod +x a; ./a; rm a
}}}

Script para reestablecer los permisos de usuario en un directorio a partir de los nombres de los archivos / directorios
{{{
cd /home

for user in `ls`
do
chown -R ${user}. $user
done
}}}

{{{
awk '{
        {FS = ":"};
        if (($3 >= 1004) && ($1 != "nobody"))
             print $1 }' /etc/passwd > /etc/scripts/usuarios

awk '{FS = " "} {print $1 }' a
}}}




! smbclient
Verificación de los recursos compartidos en un equipo remoto
{{{
$ smbclient -U doctorado -L secretariacade
}}}

! net
Herramienta de administración de Samba
{{{
$ net -l share -S host (información sobre los recursos compartidos de un pc)
$ net -l user -S host (información de usuarios samba)
}}}

! smbstatus
Monitorio de los equipos conectados a los recursos compartidos en mi equipo
{{{
$ smbstatus
}}}

! findsmb
Listado de los equipos que responden a solicitudes smb en una red local:
{{{
$ findsmb
}}}
! 1. Instalación de paquetes:
{{{
# apt-get install sasl2-bin libsasl2-modules swaks
# addgroup Debian-exim sasl
}}}

! 2. Configuración de SASL
Editar /etc/default/saslauthd
{{{
START=yes
}}}
Reinicia el servidor de autenticación SASL,
{{{
# /etc/init.d/saslauthd restart
}}}

! 3. Generar un Certificado de Seguridad
Editar /usr/share/doc/exim4-base/examples/exim-gencert para aumentar de 3 a 5 años la validez del certificado:
{{{
DAYS=1825
}}}
Generar un certificado de seguridad para encriptar la información a enviar por SMTP:
{{{
# /usr/share/doc/exim4-base/examples/exim-gencert
Country Code (2 letters) [US]:CL
State or Province Name (full name) []:.
Locality Name (eg, city) []:Mi cuidad
Organization Name (eg, company; recommended) []:Mi organizacion
Organizational Unit Name (eg, section) []:Mi unidad
Server name (eg. ssl.domain.tld; required!!!) []:smtp.servidor.debian
Email Address []:postmaster@servidor.debian
}}}
Los archivos exim.crt y exim.key  son guardados en /etc/exim4/

! 4. Configuración de Exim
Agregar en /etc/exim4/conf.d/main/03_exim4-config_tlsoptions:
{{{
# TLS/SSL configuration.
MAIN_TLS_ENABLE = 1
}}}
Des-comentar la sección login_saslauthd_server en /etc/exim4/conf.d/auth/30_exim4-config_examples:
{{{
 login_saslauthd_server:
   driver = plaintext
   public_name = LOGIN
   server_prompts = "Username:: : Password::"
   # don't send system passwords over unencrypted connections
   server_condition = ${if saslauthd{{$auth1}{$auth2}}{1}{0}}
   server_set_id = $auth1
}}}
Actualizar la configuración y reiniciar Exim4:
{{{
# update-exim4.conf
# /etc/init.d/exim4 restart
}}}

! 5. Prueba
!!! Prueba Manual
{{{
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 servidor.debian ESMTP Exim 4.63 Tue, 01 May 2007 14:51:23 -0400
}}}
En este punto se escribe: EHLO polux.unicauca.edu.co y la respuesta debe ser
{{{
250-polux.unicauca.edu.co Hello root at localhost [127.0.0.1]
250-SIZE 52428800
250-PIPELINING
250-AUTH LOGIN
250-STARTTLS
250 HELP
}}}
Las líneas 250-AUTH LOGIN y 250-STARTTLS indican que la autenticación SMTP con TLS está funcionando.

!!! Prueba con swaks
{{{
$ swaks -a -tls -q AUTH -s polux.unicauca.edu.co -au usuario
 Password: passwd
 === Trying polux.unicauca.edu.co:25...
 === Connected to polux.unicauca.edu.co.
 <-  220 evie ESMTP Exim 4.50 Fri, 05 May 2006 18:10:18 -0400
  -> EHLO evie
 <-  250-evie Hello localhost [127.0.0.1]
 <-  250-SIZE 52428800
 <-  250-PIPELINING
 <-  250-STARTTLS
 <-  250 HELP
  -> STARTTLS
 <-  220 TLS go ahead
 === TLS started w/ cipher DHE-RSA-AES256-SHA
  ~> EHLO evie
 <~  250-evie Hello localhost [127.0.0.1]
 <~  250-SIZE 52428800
 <~  250-PIPELINING
 <~  250-AUTH PLAIN
 <~  250 HELP
  ~> AUTH PLAIN AGphc28uygBOaGVxMHc=
 <~  235 Authentication succeeded
  ~> QUIT
 <~  221 evie closing connection
}}}

Más información en:
* http://wiki.debianchile.org/EximSMTPAuthDebian
* http://blog.edseek.com/~jasonb/articles/exim4_courier/conftlsauth.html
* http://man-es.debianchile.org/exim.html
* http://wiki.edseek.com/howto:exim4_courier


Software
* http://help.ubuntu.com/community/SNMPAgent
* http://www.net-snmp.org

Instalación
* http://www.linuxparatodos.net/web/comunidad/base-de-conocimiento/-/wiki/Base+de+Conocimiento/SNMP+en+Debian-Ubuntu
* http://www.linuxparatodos.net/widget/web/comunidad/base-de-conocimiento/-/wiki/Base+de+Conocimiento/MRTG+%28Multi+Router+Traffic+Grapher%29%20en+Debian-Ubuntu

Descripción de OID
* Interfaces: http://oid-info.com/get/1.3.6.1.2.1.2.2.1
SSH (Secure ~SHell) es el nombre de un protocolo y del programa que que implementa un intérprete de comandos seguro. Sirve para acceder a máquinas remotas a través de una red. Más información en: http://es.wikipedia.org/wiki/SSH

!1. Instalación de SSH
{{{
# apt-get install ssh
}}}

!2. Configuración del Servicio
/etc/ssh/sshd_config
* __Port 2222__: Evitar los ataques con scripts al puerto por defecto.
* __~PermitRootLogin no__: Obliga a tener una cuenta de usuario y a entrar en ella, antes de acceder como root.
* __~X11Forwarding no__: Un servidor no debe tener instalado interfaces de ventanas, por lo tanto esto no se requiere.

!3. Acceder por SSH al servidor
Por consola desde GNU/Linux:
{{{
ssh doctorado@172.16.130.138 -p 2222
}}}

!4. denyhosts
Denyhosts es un script escrito en python que analiza tus ficheros de log del servidor ssh, detecta los ataques al mismo, particularmente los de fuerza bruta o diccionario, e incluye las direcciones IP en el archivo /etc/hosts.deny para bloquearlas. Además permite sincronizar los datos recogidos por nuestra máquina con los de todos los usuarios que están usando este producto.

La instalación del servicios se realiza con:
{{{
# apt-get install denyhosts
}}}
La sincronización con otros usuarios no está habilitada inicialmente, para activarla se debe editar el archivo /etc/denyhosts.conf y descomentar las siguientes líneas:
{{{
SYNC_SERVER = http://xmlrpc.denyhosts.net:9911
SYNC_INTERVAL = 24h
SYNC_UPLOAD = yes
SYNC_DOWNLOAD = yes
SYNC_DOWNLOAD_THRESHOLD = 3
SYNC_DOWNLOAD_RESILIENCY = 5h
}}}
Luego se reinicia el servicio:
{{{
# /etc/init.d/denyhosts restart
}}}

Las estadísticas de atacados y atacantes recogidas por el programa y sincronizadas mediante este servicio son públicas y pueden verse en: http://stats.denyhosts.net/stats.html



! 1. Instalación
{{{
# apt-get install samba smbclient
}}}
! 2. Configuración
* Deshabilitar opciones de impresora compartida
* Deshabilitar opciones de directorio home de usuario compartido
Comprobar archivo de configuración:
{{{
# testparm
}}}
! Ejemplos
!! Carpeta con archivos de sólo lectura, de acceso público pero invisible:
{{{
[netlic]
  path = /home/users/doctoedu/netlic
  comment = Licencia MaxQDA
  browseable = no
  read only = yes
  guest ok = yes
}}}
Más información:
* http://www.guia-ubuntu.org/index.php?title=Samba
* http://trauko.wordpress.com/2007/09/17/instalando-samba-en-ubuntu-para-compartir-archivos-e-impresoras-en-redes-windows/
El listado de las impresoras Samsung soportadas en Linux, esta en: http://bchemnet.com/suldr/supported.html y las instrucciones se encuentran en: http://bchemnet.com/suldr/ 

! Instalación de Drivers
# Adición de repositorios y claves y actualización del catalogo de software en Debian o Ubuntu:
{{{
$ sudo bash -c 'echo "deb http://www.bchemnet.com/suldr/ debian extra" >> /etc/apt/sources.list'
$ sudo wget -O - http://www.bchemnet.com/suldr/suldr.gpg | sudo apt-key add -
$ sudo apt-get update
}}}
# Instalación de los paquetes para la Impresora Multifuncional ''Samsung ~SCX-4833FD'':
{{{
$ sudo apt-get install suld-driver-4.01.17 suld-configurator-2-qt4
}}}

! Configuración de la Impresora
Conectar la Impresora (ya sea por cable USB o por Red) y abrir la aplicación {{{Impresaras}}} para agregarla. Si la impresora esta en red, se debe tener la dirección IP.

! Configuración del Scanner
* El escáner es detectado automáticamente por las aplicaciones {{{Simple Scan}}} o {{{XSane}}}.
* Si la impresora no esta en la misma red lógica del computador (por ejemplo en la red a las que se conecta el Router Inalámbrico) la solución es agregar lo siguiente al archivo {{{/etc/sane.d/xerox_mfp.conf}}}:
{{{
# Samsung SCX-4833
usb 0x04e8 0x344b
tcp $IP-Impresora
}}}
* Dos comandos para verificar el funcionamiento del Escáner, son: {{{sane-find-scanner}}} y {{{scanimage -L}}}
Más información: http://lugge.wikidot.com/samsung-scx-4833
Para transmitir lo que esta sucediendo en una pantalla a un grupo de equipos en una red, se puede hacer los siguiente:

1. Se instala y configura VNC Server en el equipo desde el cual se va a hacer la transmisión. En Windows se puede utilizar ~RealVNC, ~UltraVNC o ~TightVNC. En Ubuntu viene instalado el servidor Vino con Gnome, solo se debe ir a Sistemas > Preferencias > Sistema Remoto y habilitar el servicio. Si se va a transmitir a varias personas, es mejor deshabilitar la opción de que los clientes puedan tomar control de equipo, y dejar sin contraseña el acceso. Este servicio debería desactivarse mientras no se este transmitiendo para que las personas no espíen.

Por defecto, los servidores de VNC escuchan en el puerto 5900, para cambiarlo este valor en Vino, se requiere abrir el archivo de configuraciones de Gnome, con el comando {{{gconf-editor}}} y buscar en desktop > gnome > remote_access.

2. a. Instala un cliente o visor de VNC en los equipos que reciben la transmisión. En Windows se puede utilizar ~RealVNC, ~UltraVNC o ~TightVNC instalan tanto el servido como un visor. En Ubuntu se puede instalar el programa Vinagre o xvnc4viewer.

2. b. Otra opción es descargar el applet ~TightVncViewer.jar[1], colocarlo en un computador con servidor web y crear un archivo html con el siguiente contenido:
{{{
<HTML>
<TITLE> TightVNC desktop </TITLE>
<BODY>

<APPLET ARCHIVE="TightVncViewer.jar"
        CODE="com.tightvnc.vncviewer.VncViewer"
        WIDTH="640" HEIGHT="480">
      <PARAM NAME="HOST" VALUE="192.168.2.5">
      <PARAM NAME="PORT" VALUE="5900">
      <PARAM NAME="JPEG image quality" VALUE="2">
      <PARAM NAME="View only" VALUE="Yes">
      <PARAM NAME="Scaling factor" VALUE="80">
      <PARAM NAME="Show controls" VALUE="No">
</APPLET>

</BODY>
</HTML>
}}}
Los parámetros del applet indican el equipo al que se debe conectar, el puerto (5900 es el puerto por defecto), la calidad de las imágenes que se transmites (por defecto es 6), la opción de solo ver lo que sucede con el equipo (no manejar el equipo si tiene habilitada esta opción en el VNC server), entre otros.

La ventaja de usar VNC para hacer Screencast, es que el flujo de datos solo se realiza cuando hay cambios en las imágenes que se capturan del escritorio, muy conveniente cuando se está transmitiendo unas diapositivas ya que ocupa el ancho de banda sólo cuando lo necesita. La desventaja es que el applet establece una conexión directa entre los clientes y el equipo con el VNC Server, sin importar en que servidor web se coloque el applet, por lo que no sirve si el VNC Server esta detrás de una red de área local, además de no transmitir audio.

No se supo como configurar los applet que vienen con los paquetes vnc-java y tightvnc-java en Ubuntu.

[1] http://www.tightvnc.com/ssh-java-vnc-viewer.php

Obtener información sobre la posición de una ventana en la interfaz gráfica se puede utilizar {{{xwininfo}}} o {{{kx11grab}}} como asistente.
Grabar una parte de lo que sucede en el escritorio:
{{{
$ ffmpeg -f x11grab -r 15 -s 800x600 -i :0.0+2,80 -sameq captura.avi
W: Width
H: Height
X: upper-left X
Y: upper-left Y
-y  Overwrite output files
-b video bitrate (default = 200 kb/s)
-r fps (default = 25, 15 es mínimo para el ojo humano, 24 utiliza el cine, 25 o 30 para TV) Parámetro obligatorio
-aspect aspect ratio (4:3, 16:9 or 1.3333, 1.7777)
-vcodec codec (copy, flv, mpeg4, libx264). xvid y divx son implementación de mpeg4.
-sameq same video quality as source (implies VBR)
-qmin minimum video quantizer scale (VBR). De q a 31.
-qmax maximum video quantizer scale (VBR). De 2 a q.
VBR = 2 a 31. 2 Máxima Calidad - 31 Mínima Calidad.
}}}
Obtener información de la tarjeta y del dispositivo de audio:
{{{
$ more /proc/asound/cards
$ more /proc/asound/devices
}}}
Configuración de volumen y amplificación de micrófono:
{{{
$ alsamixer
}}}
Grabar audio de micrófono (no se encontró forma de grabar sólo el audio de salida):
{{{
$ ffmpeg -f oss -i /dev/dsp audio.mp3
$ ffmpeg -f oss -ar 22050 -ab 32k -i /dev/dsp audio.mp3
$ ffmpeg -f alsa -ac 2 -i hw:0,0 -ac 1 -ar 22050 -ab 32k audio.mp3
-ar audio sampling frequency (default = 44100 Hz)
-ab audio bitrate in bit/s (default = 64k)
-aq audio quality (codec-specific, VBR)
-ac number of audio channels (default = 1)
-acodec copy, libmp3lame, libfaac, pcm_s16le, ac3, mp2
}}}
Grabar audio de micrófono y parte del escritorio (Con exención .avi, por defecto Audio con mp2 + Video con Mpeg4). Funciona en Ubuntu 10.04:
{{{
$ ffmpeg -f oss -ar 22050 -ab 32k -i /dev/dsp -f x11grab -r 15 -s 640x480 -qmax 5 -i :0.0+10,10 captura.avi
}}}
Grabar audio de micrófono con una calidad diferente a la de entrada y parte del escritorio con un tamaño diferente al de entrada (Audio con Mp3 por el cambio que se hace de codec + Video con Mpeg4 por defecto para extensión avi). Funciona con Ubuntu 10.04 y 10.10.:
{{{
$ ffmpeg -f alsa -ac 2 -i hw:0,0 -ac 1 -ar 22050 -ab 32k -f x11grab -r 15 -s 800x600 -qmax 5 -i :0.0+2,80 -acodec libmp3lame -s 576x432 captura.avi
}}}
Algunas pruebas:
* Un minuto de video de 640x480 con audio codificado en mp2 a 32k, ocupa 7.1 MB, pero si el audio esta en mp3 ocupa 5.8 MB. Si el video es de 576x432 con audio codificado en mp2 a 32k, ocupa 6.1 MB, pero con mp3 ocupa 5.6 MB. Por tanto influye más la codificación del audio que las dimensiones del video.
* Un minuto de video de 640x480 con audio codificado en mp2 a 64k, ocupa 7.9 MB, pero si el audio esta en mp3 ocupa 4.8 MB.

Más información en:
* http://neobraindump.wordpress.com/2010/10/09/capturar-una-ventana-con-ffmpeg-y-pasar-el-resultado-a-gif/
* http://www.ffmpeg.org/ffmpeg-doc.html
! nslookup

! host 

! dig
Herramienta para realizar consultas a servidores DNS.

Un servidor debe tener el software instalado, los procesos corriendo y los puertos abiertos estrictamente necesarios.

!1. Deshabilitar el inicio automático de servicios en Inetd
Inetd es un demonio presente en la mayoría de sistemas tipo Unix, conocido como el "Super Servidor de Internet", ya que gestiona las conexiones de varios demonios. La ejecución de una única instancia de inetd reduce la carga del sistema, en comparación con lo que significaría ejecutar cada uno de los demonios que gestiona, de forma individual. Más información en: http://es.wikipedia.org/wiki/Inetd

En Debian Lenny esta habilitado por defecto el servicio //auth// (puerto 113), sin embargo no es tan importante y por seguridad es mejor deshabilitarlo. Para ello solo se debe comentar la línea correspondiente en el archivo __/etc/inetd.conf__

!2. Deshabilitar el inicio de procesos innecesarios
Instalar una herramienta para facilitar el manejo de los escripts de inicio en cada Run Level.
{{{
# apt-get install sysv-rc-conf (se debe instalar la primera vez)
}}}
{{{
# sysv-rc-conf
}}}
Deshabilitar: atd (manejo de cola de tareas), nsf-common, portmap o rpcbind (los tres últimos son para manejar el montaje de particiones con NFS y utilizan los puertos 111, 59221, 59432, 693).
En Debian 7, si ya esta instalada la dirección IP estática, se debe desistalar el paquete {{{isc-dchp-client}}} para que cierren los puertos UDP: 68, 10074 y 41984. No se encotró como inabilitar el servicio sin necesidad de des-instalar.

!3. Verificación con netstat
{{{
$ netstat -ntu
}}}

!4. Verficación con nmap
Nmap es un programa de código abierto que sirve para efectuar rastreo de puertos TCP y UDP.
{{{
# apt-get install nmap (se de instalar la primera vez)
}}}
{{{
$ nmap -A -T4 172.16.130.138 -p 1-3000
}}}



Instalación de Debian5 en un Servidor Dell:
# [[SxBase]]
# [[Red]]
# [[APT]]
# [[SSH]]
# [[NTP]]
# [[Backups]]
# [[Servicios]]
# [[CuotasUsuario]]
# [[Clamav]]
# [[Exim]]
# [[SpamAssassin]]
# [[Apache]]
# [[Munin]]
# [[MySQL]]
# [[phpMyAdmin]]
# [[OpenWebmail]]
# [[LogsServidor]]
# [[Moodle]]
# [[LimeSurvey]]
# [[Plogger]]
# [[CmapServer]]
# [[Gregarius]]
# [[FFserver |Streaming ffserver]]
# [[Moin |Moin 1.9]]
# [[MediaWiki]]
# [[Samba]]
apuntes sobre comandos, paquetes y utilidades
MAN sobre GNU/Linux
! TV LG 49UH610T

!!! Móvil a TV 
1. ''DLNA'': Mostrar archivos multimedias en el TV utilizando una red ~WiFi disponible.
* TV y Móvil deben estar en la misma red.
* Compartir fotos, videos y música del celular con la opción {{{SmartShare}}} y escoger el TV.

3. ''~WiFi Direct'': Mostrar archivos multimedias en el TV creando una red entre el TV y el Móvil.
* Apagar la opción ~HbbTV en el TV.
* Activar {{{WiFi Direct}}} en el Móvil.
* Activar {{{WiFi Direct}}} y escoger el Móvil en el TV.
* Se visualiza archivos multimedia del Móvil en el TV utilizando la aplicación {{{SmartShare}}}.

3. ''Miracast'' / ''~AllShare'' / ''Screen Share'' / ''Intel ~WiDi'': Mostrar el escritorio del dispositivo móvil en el TV a través de una conexión ~WiFi
* TV y Móvil deben estar en la misma red.
* Apagar la opción ~HbbTV en el TV
* Encender la opción {{{Miracast}}} en el TV
* En el celular se debe encender la opción de {{{Miracast}}} o {{{AllShare}}} si tiene esta funcionalidad.

4. ''MHL'': Mostrar el escritorio del dispositivo móvil en el TV a través de una conexión por cable
* Verificar que el adaptador MHL se encuentra integrado en el puerto HDMI del TV.
* Utilizar un cable microUSB-HDMI para conectar el Móvil al TV.

Más información: http://www.lg.com/es/smart-tv/trucos/como-compartir-los-archivos-de-tu-smartphone-o-tablet-con-lg-smart-tv.html

!!! Computador a TV

1. ''Intel ~WiDi'' / ''Miracast'': Compartir escritorio del computador en el TV.
* Encender la opción {{{Miracast}}} en el TV
* Instalar y abrir {{{Intel WiDi}}} en el computador (siempre y cuando sea compatible con el equipo), seleccionar el TV. [Existe un proyecto en Linux que se llama ~OpenWFD]
* Introducir el PIN que aparece en el TV.

2. ''DLNA'': Reproducir contenidos multimedia del computador en el TV
* Descarga e instala en el computador alguno de los siguientes programas:
** {{{Smart Share}}} de LG: http://liu.lge.com/smartshare/release/smartshare.zip
** {{{Plex Server}}}: https://www.plex.tv/es/downloads/
* Inicia {{{Smart Share}}} o {{{Plex Server}}} en el computador y selecciona el tipo de archivo que quieres compartir: Fotos, Películas o Música.
* Escoger el TV en el que se van a reproducir los archivos.

Más información en: http://www.lg.com/es/smart-tv/trucos/como-compartir-todo-lo-que-haces-con-tu-ordenador-en-la-pantalla-grande-de-lg-smart-tv.html

!!! App LG TV Plus

1. El app convierte tu móvil en un control remoto del TV.

2.  Reproducir contenido multimedia del móvil en el TV
* Instalar en el móvil, la aplicación {{{iMediaShare}}}.
* TV y Móvil deben estar en la misma red.

Más información en: http://www.lg.com/es/smart-tv/trucos/como-utilizar-tu-smartphone-y-lg-smart-tv-juntos.html




Esta aplicación corre un demonio que escucha por el puerto TCP 783, aunque lo debe hacer sólo para la interfase local. Más información en: http://en.wikipedia.org/wiki/SpamAssassin

!1. Instalación
La mejor manera de hacerlo funcionar es arrancar el demonio spamd y comunicarse con él a través del spamc.
{{{
# apt-get install spamassassin spamc sa-exim
}}}

!2. Configuración spamassassin
* Opciones a configurar en /etc/spamassassin/local.cf
{{{
rewrite_header Subject *SPAM*
use_bayes 1
bayes_auto_learn 1
}}}
* Opciones a configurar en /etc/default/spamassassin
{{{
ENABLED=1
OPTIONS="--create-prefs --max-children 8 --helper-home-dir" 
}}}
Aumentar max-children de 5 a 8 cuando el número de spam que debe procesar es moderado.
* Re-iniciar el servicio
{{{
/etc/init.d/spamassassin restart
}}}
* ''Procmail'' es un programa de filtrado de correo. El correo marcado como SPAM será redirigido a $HOME/mail/spam-mail del receptor, para lo cual se requiere editar el archivo /etc/procmailrc:
{{{
:0fw: spamassassin.lock
* < 256000
| spamassassin

  :0:
  * ^X-Spam-Status: Yes
  mail/spam-mail
}}}
''procmail'' se encarga de reconocer '''este encabezado''' y redirigir el mensaje a ''$HOME/mail/spam-mail'' [1]. Se sugiere este nombre de directorio para que coincida con la opción de spam de ~OpenWebmail.

!3. Configuración de sa-compile 
''sa-compile'' es una utilidad distribuida con ~SpamAssassin que compila un conjunto de reglas para que ~SpamAssassin haga un procesamiento más eficiente.
* Instala el paquete sa-exim,
{{{
# apt-get install sa-exim
}}}
* Edita /etc/exim4/sa-exim.conf y comenta la línea,
{{{
#SAEximRunCond: 0
}}}
* Actualiza la configuración de Exim, y reinicia Exim
{{{
# update-exim4.conf
# /etc/init.d/exim4 restart
}}}
* Aumentos de puntuación - opcionales (al final del archivo: /etc/spamassassin/local.cf)
{{{
score DCC_CHECK 2.500            #Un buen valor esta entre 2.500 y 4.000, pero depende del dominio
score SPF_FAIL 10.000
score SPF_HELO_FAIL 10.000
score RAZOR2_CHECK 2.500
score BAYES_99 4.300
score BAYES_95 3.500
score BAYES_80 3.000
}}}
* Reduccion de puntuación - opcionales, pero muy útiles (al final del archivo: /etc/spamassassin/local.cf)
{{{
score DK_SIGNED         -1.000
score DK_VERIFIED       -2.500
score SPF_PASS          -2.500
}}}

!3. Test
* Descargar archivos de prueba:
http://wiki.apache.org/spamassassin/AskingAboutIntegrations
* Probar con un correo que no es spam:
{{{
$ spamassassin -tD < sample-nonspam.txt
}}}
 ''output'': ~X-Spam-Status: No, score=3.9 required=5.0
* Probar con un correo que es spam:
{{{
$ spamassassin -tD < sample-spam.txt
}}}
 ''output'': ~X-Spam-Status: Yes, score=997.2 required=5.0

!4. Aprendizajes con filtros Bayesianos
Se basan en estudios de probabilidad asignando una serie de puntos a ciertas partes de los mensajes. Si el mensaje supera la puntuación establecida por nosotros, es considerado como SPAM.
* Para aprender Spam:
{{{
# sa-learn --spam --dbpath /var/spool/exim4/.spamassassin/ --mbox /home/usuario/mail/spam
}}}
* Para aprender de los correos No Spam (suponiendo un Imbox depurado):
{{{
# sa-learn --ham --dbpath /var/spool/exim4/.spamassassin/ --mbox /var/mail/usuario
}}}
La variable dbpath es necesaria para que el aprendizaje se guarde en la base de datos del sistema (que por defecto esta en /var/spool/exim4/.spamassassin/ cuando es usado por Exim) y no en la base de datos del usuario (que por defecto esta en ~/.spamassassin/). Es preferible hacer este proceso manualmente para evitar la ubicación de correos validos en la base de datos de spam general, de forma accidental.

!6. Problemas
Si se presenta el mensaje en el syslog:
{{{
prefork: server reached --max-children setting, consider raising it
}}}
Se debe a que el número de procesos hijos máximos definidos para spamassassin, resultan insuficientes para atender el spam que debe procesar. Si el número de veces que sale este mensaje por día no es mucho, se puede ignorar. De lo contrario se debe aumentar el valor del parámetro max-children en /etc/default/spamassassin

!7. Enlaces
* [[Configuración del servidor de correo en Debian |http://ftp.cl.debian.org/man-es/exim.html]]
* [[Rejecting viral email at SMTP time with exim4 |http://www.debian-administration.org/articles/141]]
* [[Antivirus and Antispam setup with Exim4 | http://www.debian-administration.org/articles/511]]
* [[Exim4 con antivirus (clamav) y spamassassin integrado | http://www.bulma.net/impresion.phtml?nIdNoticia=1973]]
* [[Instalación y configuración de Exim4 con antivirus y antispam | http://debiancuba.org/?q=instalacion-y-configuracion-de-exim4-con-antivirus-y-antispam]]
* [[Antispam (III) | http://lubrin.org/spip.php?article63]]
* [[sa-learn - train SpamAssassin's Bayesian classifier | http://spamassassin.apache.org/full/3.0.x/dist/doc/sa-learn.html]]
* [[Should document homedir used for bayes database | http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=470609]]

Para enviar stream desde un equipo con GNU/Linux a un servidor Icecast como giss.tv, se puede utilizar los programas {{{Ices}}} o {{{Idjc}}}. Sin embargo en las pruebas realizadas sobre un Ubuntu 10.04, con {{{Ices}}} aparentemente conectaba al servidor pero no transmitía nada.

Para trabajar con {{{Idjc}}} se requiere instalar:
{{{
# apt-get install idjc jackd
}}}
Para correr el programa, se requiere que no este abierto ninguna otra aplicación de audio, ya que monopoliza los recursos:
{{{
$ idjc
}}}
El problema que se encontró es la alta latencia al utilizar el servicio de giss.tv, el cual alcanzo tiempos entre los 10 y los 15 segundos.

Más información:
* http://giss.tv/wiki/
* http://www.icecast.org/ices.php
! Servidor
Instalación realizada en Ubuntu 10.10 y en Debian 5.0
!! Instalación
La instalación en 10.04 (ffmpeg 0.5.1-2009) se realiza desde el sistema de paquetes. La versión de ffmpeg (0.6) que viene con Ubuntu 10.10 no es compatible con la versión que se esta utilizando:
{{{
# apt-get install ffmpeg    (incluye ffplay y ffserver)
}}}
La instalación en Debian 5.0 (ffmpeg 2008) se debe realizar manualmente[1]:
Instalar firmas de nuevo repositorio:
{{{
# wget http://www.debian-multimedia.org/pool/main/d/debian-multimedia-keyring/debian-multimedia-keyring_2010.12.26_all.deb
# dpkg -i debian-multimedia-keyring_2010.12.26_all.deb
}}}
Configuración del nuevo repositorio en /etc/apt/sources.list
{{{
# deb http://www.debian-multimedia.org lenny main
# deb-src http://www.debian-multimedia.org lenny main
}}}
Instalación de paquetes requeridos para la compilación y generación de paquetes:
{{{
# apt-get install checkinstall yasm git-core build-essential
}}}
Instalación de dependencias de ffmpeg:
{{{
# apt-get build-dep ffmpeg
}}}
Compilación librería x264:
{{{
# git clone git://git.videolan.org/x264.git
# cd x264
# ./configure
# make
# checkinstall --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`" --backup=no --default
# apt-get remove libx264-dev
}}}
Compilación libtheora:
{{{
# wget http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.gz
# tar xzf libtheora-1.1.1.tar.gz
# cd libtheora-1.1.1
# ./configure
# make
# checkinstall --pkgname=libtheora --pkgversion "1.1.1" --backup=no --default
}}}
Compilación ffmpeg: 
{{{
# wget http://www.ffmpeg.org/releases/ffmpeg-0.5.3.tar.gz
# tar xzf ffmpeg-0.5.3.tar.gz
# cd ffmpeg-0.5.3
# ./configure --enable-version3 --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libgsm --enable-postproc --enable-libxvid --enable-libfaac --enable-pthreads --enable-libvorbis --enable-libfaad --enable-gpl --enable-x11grab --enable-nonfree
# make
# checkinstall --pkgname=ffmpeg --pkgversion "4:0.5+svn`date +%Y%m%d`" --backup=no --defaul
}}}

!! Configuración General
En /etc/ffserver.conf se configura [2]: puerto, número máximo de conexiones, etc. Si quiere que el programa corra como servidor (demonio), se debe comentar la opción {{{NoDaemon}}}
{{{
# Valores generales:
Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000
CustomLog -
#NoDaemon

# Estado del Servidor
<Stream stat.html>
        Format status
        ACL allow 169.254.0.0 169.254.255.255
</Stream>

# Redirección dirección raíz
<Redirect index.html>
        URL http://www.mipagina.pais/
</Redirect>
}}}

!! Configuración Stream de Escritorio GNU/Linux (X11)
En /etc/ffserver.conf
{{{
<Feed x11feed.ffm>
        File /tmp/x11feed.ffm
        FileMaxSize 30M
        ACL allow 169.254.0.0 169.254.255.255
</Feed>

<Stream x11stream.flv>
        Feed x11feed.ffm
        Format flv

        AudioBitRate 32
        AudioChannels 1
        AudioSampleRate 22050

        VideoFrameRate 1
        VideoSize 512x384
        VideoQMax 5
</Stream>

<Stream x11stream.mp3>
	Feed x11feed.ffm
	Format mp3
	AudioBitRate 32
	AudioChannels 1
	AudioSampleRate 22050
	NoVideo
</Stream>
}}}
Algunas consideraciones:
*  La configuración del Stream FLV busca que el ancho de banda requerido para la recepción sea de 512 Kbps, sacrificando tamaño (~VideoSize) y fluidez (~VideoFrameRate) en vez de calidad (~VideoQMax) con un feed de 800x600. Para asegurar el ancho de banda, se puede habilitar el parámetro ~VideoBitRate, pero a mi no me funciono.
* Si el tamaño de la imagen se sube a 640x480 y se mantienen los demás parámetros, mejora la legibilidad de la imagen, pero requiere de un ancho de banda de recepción de 768 Kbps. Si el tamaño es de 768x576 se requiere de un ancho de banda de 1 Mbps.
* El aumento del parámetro ~VideoFrameRate sube exponencialmente el requerimiento de ancho de banda. Es necesario para visualizar video o imágenes con movimientos rápidos. Con un ~VideoFrameRate de 5 y sin modificar los demás parámetros, se sube el requerimiento de ancho de banda a 2.5 Mbps, si se sube a 10 el ancho de banda requerido es de 5 Mbps.
* La opciones del audio tienen calidad de Radio AM, lo cual es una calidad aceptable para voz humana y audio con un bajo consumo de ancho de banda.
* El Stream Mp3 requiere de un ancho de banda de 32 kbps (aprox.).
* La latencia es de aproximadamente 5 segundos.

!! Configuración Stream de ~WebCam
En /etc/ffserver.conf [3][4]
{{{
<Feed camfeed.ffm>
        File /tmp/camfeed.ffm
        FileMaxSize 10M
        ACL allow 169.254.0.0 169.254.255.255
</Feed>

<Stream camstream.swf>
        Feed camfeed.ffm
        Format swf

        AudioBitRate 32
        AudioChannels 1
        AudioSampleRate 22050

        VideoFrameRate 5
        VideoSize 320x320
        VideoQMax 5
</Stream>
}}}
Algunas observaciones:
* Con la configuración indicada, se requiere un ancho de banda de 256 kbps.
* Un stream swf se puede embeber directamente en una página web. Un stream flv se puede controlar a través de un reproductor web, como Flowplayer. Pero la calidad del video es un poco mejor con FLV que con Swf.

!! Funcionamiento del servidor
* Inicio manual:
{{{
# ffserver
}}}
* Creación de script en /etc/init.d/ para que arranque como servicio:
{{{
#! /bin/sh
NAME=ffserver
DAEMON=/usr/local/bin/ffserver

case "$1" in
  start)
    echo -e "Starting $NAME \n"
    su -c $DAEMON
    ;;

  stop)
    echo -e "Stopping $NAME \n"
    pkill -f $NAME
    ;;

*
    echo "Usage: /etc/init.d/$NAME {start|stop}"
    exit 1
    ;;
esac
}}}

!! Configuración de Apache
Debido a que existen firewalls o proxys que restringen el acceso web a puertos no convencionales, en el archivo /etc/ffserver.conf se puede especificar para que ffserver funcione en el puerto 80. Sin embargo, si este puerto ya esta siendo utilizado por apache, se puede configurar este último para que actué como proxy para llegar a ffserver[7]. Para ello se debe agregar las siguientes líneas en la configuración apache (generalmente /etc/apache2/sites-available/default):
{{{
<VirtualHost *:80>
# ...        

        RewriteEngine on

        ProxyRequests Off
        <Proxy *>
                Order Deny,Allow
                Allow from 127.0.0.1
        </Proxy>

        ProxyPass               /ffserver    http://localhost:8090
        ProxyPassReverse        /ffserver    http://localhost:8090

# ...        
</VirtualHost>
}}}
Con esta configuración se asegura que apache sólo se utilice para acceder a servicios web del mismo equipo, en este caso, el servicio de ffserver que esta funcionando en el puerto 8090. Por tanto, para acceder a stream configurados, se tiene:
* http://servidor:8090/x11stream.flv o http://servidor/ffserver/x11stream.flv
* http://servidor:8090/camstream.swf o http://servidor/ffserver/camstream.swf

! Emisor
Configuración en Ubuntu 10.04. No funcionó con la versión de ffmpeg que viene en Ubuntu 10.10 porque no es compatible con la versión de ffmpeg del servidor.
* Emisión (feed) de escritorio en GNU/Linux (x11) + audio de micrófono:
{{{
$ ffmpeg -f oss -ar 22050 -ab 32k -i /dev/dsp -f x11grab -r 1 -s 800x600 -i :0.0 http://servidor:8090/x11feed.ffm
}}}
* Emisión (feed) de video de webcam + audio de micrófono [3][4]. Previamente la webcam debe estar funcionando en el sistema operativo y debe ser reconocida por ffmpeg:
{{{
$ ffplay -s 464x464 -f video4linux2 /dev/video0  (probar funcionamiento de camara)
$ ffmpeg -f oss -ar 22050 -ab 32k -i /dev/dsp -f video4linux2 -s 464x464 -i /dev/video0 http://servidor:8090/camfeed.ffm
}}}
* También se puede enviar al servidor un archivo de video pregrabado, pero dependiendo del video se recomienda crear un stream adecuado a los parámetros del video:
{{{
$ ffmpeg -i archivo.avi http://servidor:8090/videofeed.ffm
}}}

! Receptor
!! VLC
{{{
$ vlc http://servidor:8090/x11stream.flv
$ vlc http://servidor:8090/x11stream.mp3
$ vlc http://servidor:8090/camstream.swf
}}}
!! Mplayer
{{{
$ mplayer http://servidor:8090/x11stream.flv
}}}

!! Swf embebido en Html
Si el stream es swf, se puede embeber la transmisión en una página web directamente [3]:
{{{
<html>
<head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <title>Cam Stream</title>

</head>
<body>
        <h1>Cam Stream</h1>
        <EMBED
                src="http://servidor/ffserver/camstream.swf"
                width=500
                height=500
                type="application/x-shockwave-flash">
        </EMBED>
</body>
</html>
}}}

!! Flv en Web Player
# Descargar y descomprimir Flowplayer Free: http://releases.flowplayer.org/flowplayer/flowplayer-3.2.5.zip
# En un mismo directorio en el servidor web, colocar los archivos: flowplayer-3.2.4.min.js, flowplayer-3.2.5.swf, flowplayer.controls-3.2.3.swf
# Crear el archivo x11strem-flv.html [6][8]:
{{{
<html>
<head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <script type="text/javascript" src="flowplayer-3.2.4.min.js"></script>
        <title>X11 Stream</title>
</head>
<body>
        <h1>X11 Stream</h1>
        <a
                style="display:block;width:640px;height:480px"
                id="player">
        </a>
        <script>
                flowplayer("player", "flowplayer-3.2.5.swf",{
                clip: {
                        url: 'http://servidor/ffserver/x11stream.flv',
                        autoPlay: 
                        true, autoBuffering: true, 
                        live: true
                },
                onLoad: function () {
                        this.setVolume(100)
                },
                plugins: {
                        controls: {
                                scrubber: false,
                                bottom: 10,
                                width: 165,
                                right: 10,
                                opacity: 0.8,
                                borderRadius: 10,
                                time: false
                        }
                },
                buffering: false
                });
        </script>
</body>
</html>
}}}

!! Mp3 en Web Player
# Descargar y descomprimir Flowplayer Free: http://releases.flowplayer.org/flowplayer/flowplayer-3.2.5.zip
# Descargar el plugin de audio de Flowplayer [9]: http://releases.flowplayer.org/flowplayer.audio/flowplayer.audio-3.2.1.swf 
# En un mismo directorio en el servidor web, colocar los archivos: flowplayer-3.2.4.min.js, flowplayer-3.2.5.swf, flowplayer.controls-3.2.3.swf, flowplayer.audio-3.2.1.swf
# Crear el archivo x11strem-mp3.html:
{{{
<html>
<head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <script type="text/javascript" src="flowplayer-3.2.4.min.js"></script>
        <title>X11 Stream</title>
</head>
<body>
	<h1>X11 Stream MP3</h1>
        <a
                style="display:block;width:500px;height:30px"
                id="player">
        </a>
	<script>
		flowplayer("player", "flowplayer-3.2.5.swf", {
			clip: {
				url: 'http://servidor/ffserver/x11stream.mp3',
				autoBuffering: true,
                        	live: true
			},
        	        onLoad: function () {
	                        this.setVolume(100)
                	},
			plugins: {
				controls: {
					fullscreen: false,
					height: 30,
					time: false,
					autoHide: false
				}
			}
		});
	</script>
</body>
</html>
}}}

! Grabar
Se puede grabar la señal en uno de los receptores, utilizando VLC[10] o Mplayer. Si se tiene la posibilidad de tener una conexión de alta velocidad (más de 10 Mbps) entre el servidor y un cliente o receptor, se puede crear un stream de más alta calidad con el mismo feed para hacer que la grabación y posterior publicación, sea de mayor calidad.
Mplayer
{{{

}}}
Tasas de grabación:
* Video de 512x384, 1 fps y 32 kbps de audio: 6,8 MB por minuto.
* Video de 512x384, 2 fps y 32 kbps de audio: 8,2 MB por minuto.
* Video de 640x480, 5 fps y 32 kbps de audio: 30 MB por minuto.

! Referencias
[1] http://www.adminsehow.com/2009/07/how-to-install-ffmpeg-on-debian-lenny-from-svn/
[2] http://ffmpeg.org/ffserver-doc.html
[3] http://ubuntuforums.org/showthread.php?t=665607
[4] http://www.mygeekproject.com/?p=441
[6] http://flowplayer.org/forum/7/19452
[7] http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
[8] http://flowplayer.org/forum/2/22477
[9] http://flowplayer.org/plugins/streaming/audio.html
[10] http://elblogdelordhenry.blogspot.com/2009/11/grabar-streaming-con-vlc.html
/*{{{*/
/*Blackicity Theme for TiddlyWiki*/
/*Design and CSS by Saq Imtiaz*/
/*Version 1.0*/
/*}}}*/
/*{{{*/
body{	font-family: "Neue Helvetica", Helvetica, "Lucida Grande", Verdana, sans-serif;
	background-color: #fff;
	color: #333;}

#topMenu {position:relative; background:#282826; padding:10px; color:#fff;font-family:'Lucida Grande', Verdana, Sans-Serif;}
#topMenu br {display:none;}

#topMenu a{			color: #999;
			padding: 0px 8px 0px 8px;
			border-right: 1px solid #444;}
#topMenu a:hover {color:#fff; background:transparent;}

#displayArea {margin-left:1em; margin-bottom:2em; margin-top:0.5em;}


a, a:hover{
color:#333;
text-decoration: none;   background:transparent; 
}

.viewer a, .viewer a:hover {border-bottom:1px dotted #333; font-weight:bold;}


.viewer .button, .editorFooter .button{
color: #333;
border: 1px solid #333;
}

.viewer .button:hover,
.editorFooter .button:hover, .viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{
color: #fff;
background: #333;
border-color: #333;
}

.tiddler .viewer {line-height:1.45em;}
.title {color:#222; border-bottom:1px solid#222; font-family:'Lucida Grande', Verdana, Sans-Serif; font-size:1.5em;}
.subtitle, .subtitle a { color: #999999; font-size: 0.95em;margin:0.2em;}
.shadow .title{color:#999;}

.toolbar {font-size:90%;}
.selected .toolbar a {color:#999999;}
.selected .toolbar a:hover {color:#333; background:transparent;border:1px solid #fff;}

.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{color:#333; background:transparent;border:1px solid #fff;}

/***
!Sidebar
***/
#sidebar { margin-bottom:2em !important; margin-bottom:1em; right:0;
}

/***
!SidebarOptions
***/
#sidebarOptions { padding-top:2em;background:#f3f3f3;padding-left:0.5em;}

#sidebarOptions a {
			color:#333;
                        background:#f3f3f3;
                        border:1px solid #f3f3f3;
			text-decoration: none;
}

#sidebarOptions	a:hover, #sidebarOptions a:active {
			color:#222;
			background-color:#fff;border:1px solid #fff;
		}

#sidebarOptions input {border:1px solid #ccc; }

#sidebarOptions .sliderPanel {
	background: #f3f3f3; 	font-size: .9em;
}

#sidebarOptions .sliderPanel input {border:1px solid #999;}
#sidebarOptions .sliderPanel .txtOptionInput {border:1px solid #999;width:9em;}

#sidebarOptions .sliderPanel a {font-weight:normal; color:#555;background-color: #f3f3f3; border-bottom:1px dotted #333;}


#sidebarOptions .sliderPanel a:hover {
color:#111;
background-color: #f3f3f3;
border:none;
border-bottom:1px dotted #111;
}
/***
!SidebarTabs
***/
 .listTitle {color:#222;}
#sidebarTabs {background:#f3f3f3;}

#sidebarTabs .tabContents {background:#cfcfcf;}

#sidebarTabs .tabUnselected:hover {color:#999;}

#sidebarTabs .tabSelected{background:#cfcfcf;}

#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#666;}
#sidebarTabs .tabContents .tiddlyLink:hover,#sidebarTabs .tabContents .button:hover{color:#222;background:transparent; text-decoration:none;border:none;}

#sidebarTabs .tabContents .button:hover, #sidebarTabs .tabContents .highlight, #sidebarTabs .tabContents .marked, #sidebarTabs .tabContents a.button:active{color:#222;background:transparent;}

#sidebarTabs .txtMoreTab .tabSelected,
#sidebarTabs .txtMoreTab .tab:hover,
#sidebarTabs .txtMoreTab .tabContents{
 color: #111;
 background: #f3f3f3; border:1px solid #f3f3f3;
}

#sidebarTabs .txtMoreTab .tabUnselected {
 color: #555;
 background: #AFAFAF;
}



/***
!Tabs
***/
.tabSelected{color:#fefefe; background:#999; padding-bottom:1px;}
 .tabSelected, .tabSelected:hover {
 color: #111;
 background: #fefefe;
 border: solid 1px #cfcfcf;
}

 .tabUnselected {
 color: #999;
 background: #eee;
 border: solid 1px #cfcfcf;
 padding-bottom:1px;
}
.tabUnselected:hover {text-decoration:none; border:1px solid #cfcfcf;}
.tabContents {background:#fefefe;}





.tagging, .tagged {
border: 1px solid #eee;
background-color: #F7F7F7;
}

.selected .tagging, .selected .tagged {
background-color: #f3f3f3;
border: 1px solid #ccc;
}

.tagging .listTitle, .tagged .listTitle {
color: #bbb;
}

.selected .tagging .listTitle, .selected .tagged .listTitle {
color: #333;
}

.tagging .button, .tagged .button {
color:#ccc;
}
.selected .tagging .button, .selected .tagged .button {
color:#aaa;
}

.highlight, .marked {background:transparent; color:#111; border:none; text-decoration:underline;}

.tagging .button:hover, .tagged .button:hover, .tagging .button:active, .tagged .button:active {
border: none; background:transparent; text-decoration:underline; color:#333;
}



.popup {
background: #cfcfcf;
border: 1px solid #333;
}

.popup li.disabled {
color: #000;
}

.popup li a, .popup li a:visited {
color: #555;
border: none;
}

.popup li a:hover {
background: #f3f3f3;
color: #555;
border: none;
}



#messageArea {

border: 4px dotted #282826;
background: #F3F3F3;
color: #333;
font-size:90%;
}

#messageArea a:hover { background:#f5f5f5; border:none;}


#messageArea .button{
color: #333;
border: 1px solid #282826;
}

#messageArea .button:hover {
color: #fff;
background: #282826;
border-color: #282826;
}






.tiddler {padding-bottom:10px;}

.viewer blockquote {
border-left: 5px solid #282826;
}

.viewer table, .viewer td {
border: 1px solid #282826;
}

.viewer th, thead td {
background: #282826;
border: 1px solid #282826;
color: #fff;
}
.viewer pre {
border: 1px solid #ccc;
background: #f5f5f5;
}

.viewer code {
color: #111; background:#f5f5f5;
}

.viewer hr {
border-top: dashed 1px #222; margin:0 1em;
}

.editor input {
border: 1px solid #ccc; margin-top:5px;
}

.editor textarea {
border: 1px solid #ccc;
}

h1,h2,h3,h4,h5 { color: #282826; background: transparent; padding-bottom:2px; font-family: Arial, Helvetica, sans-serif; }
h1 {font-size:18px;}
h2 {font-size:16px;}
h3 {font-size: 14px;}
/*}}}*/
~> Prender el equipo y meter el CD
* Instalación Normal
* Escoger el lenguaje del proceso de instalación
* Lugar geográfico del equipo
* Tipo de teclado
* Configuración de red (se puede dejar para después)
* Particionamiento (se recomienda que sea manual, y que tenga en cuenta las siguientes particiones para un servidor)
** swap: igual que la RAM si es mayor a 1GB, el doble si es menor.
** /boot: archivos de arranque del S.O., para que el arranque del equipo no se afecte si las otras particiones están llenas. Separa el Kernel del resto del sistema. Se recomienda 100 MB.
** /home: se recomienda para separar los datos de usuario del S.O. y así poder establecer cuotas. Tamaño depende del uso.
~> Instalación del Sistema Base
* Password del Root
* Definición de un Usuario y Password
* Deshabilitar el reporte de los paquetes más utilizados (hacer esto en servidores)
* Seleccionar software: Sólo escoger "Software Estándar"
* Instalación de GRUB en el MBR
~> Reiniciar el Computador sin el CD
* Configuración de la Zona Horaria (por ubicación geográfica)
{{{
# dpkg-reconfigure tzdata
}}}
* Configuración de los Locales. Escoger en_US.~UTF-8, en_US.8859-1, es_CO.~UTF-8, es_CO.8859-1, y por defecto en_US. Si bien lo ideal es trabajar con codificación ~UTF-8, esto es problemático cuando se va a montar un servidor de correo que interactué con servidores viejos, y la razón por la que se debe escoger en_US, es para facilitar la búsqueda de información a partir de los mensajes cuando surgen problemas.
{{{
# dpkg-reconfigure locales
}}}
* Verificación y configuración del Reloj Harware
{{{
# hwclock
# hwclock --set --date="12/29/2008 23:10:30" (mm/dd/aaaa)
}}}
* Verificación y configuración del Reloj del Sistema
{{{
# date
# date 121810512008 (formato MMDDhhmmYYYY)
}}}
* Para copiar la hora del Reloj Hardware en el Reloj del Sistema
{{{
# hwclock --hctosys
}}}

Más información:
* http://javoaxian.blogspot.com/2008/03/cambiar-el-encoding-o-charset-de-ubuntu.html


<<allTags>>
Intel tiene soporte Linux para muchas de sus Tarjetas de Video. Aunque Ubuntu reconoce estas tarjetas, se recomienda utilizar el instalador de Intel para utilizar los drivers propietarios. Más información en: https://01.org/linuxgraphics/

El instalador se ejecuta como Root:
{{{# intel-linux-graphics-installer}}}

Esto se hizo para la instalación de Lubuntu 14.04 en un Portátil Dell Latitude D620. Pero no se encontró diferencia.
1. Conectarse con el cliente telnet al servidor que corresponda. El puerto casi siempre es 110.

2. Identificarse:
* user nombreDeUsuario
* pass contraseña
Sé que es posible enviar la contraseña encriptada

3. Ver la lista de mensajes:
* list, este comando devuelve la lista de mensajes y lo que ocupa cada uno en bytes.
* stats, nos dice cuántos mensajes tenemos y cuántos bytes ocupan, en total.

4. Leer un mensaje:
* retr mensajeNúmero, por ejemplo, retr 1 para el primer mensaje, retr 2 para el segundo.
* top mensajeNúmero númeroDeLíneas, para leer las primeras líneas del mensaje (además de todos los encabezados).

5. Borrar un mensaje:
* dele mensajeNúmero, Muy útil si nos han mandado un mail de tropecientos megas que no nos interesa en absoluto. El mensaje no se borra hasta que terminamos la sesión con quit.
* rset, Recupera un mensaje que hemos marcado para borra con dele, antes de cerrar la sesión.

6. Terminar la sesión:
* quit

! Linux
Escribe 9 archivos de 100MB para conocer la velocidad de escritura. Por defecto lee y copia 512 bytes a la vez.
{{{
$ dd if=/dev/zero of=filetest bs=100M count=9 conv=fdatasync
}}}

Más información en:
* http://it.toolbox.com/blogs/database-soup/testing-disk-speed-the-dd-test-31069
* https://romanrm.net/dd-benchmark

! Windows
Para que se pueda establecer una comparación entre Linux y Windows, con la herramienta ~CrystalDiskMark utilizar archivos de 100MB y repetir la prueba 9 veces. Para comparar estos resultados con los del comando dd, hay que mirar el resultado de SEQ ya que es la prueba que lee y copia 512bytes a la vez. El programa se descarga de: http://crystalmark.info/download/index-e.html

Más información en:
* http://www.muycanal.com/2014/04/08/tutorial-rendimiento-hdd-ssd
* https://wiki.mikejung.biz/CrystalDiskMark

! Software con diccionarios locales
!! ~GoldenDict ***
1. Instalar desde Synaptic (reconoce todos los diccionarios instalados ~StarDict, ~FreeDict)
2. Configurar desde: http://www.taringa.net/posts/linux/5891355/Un-diccionario-muy-vers%C3%A1til.html

Más información en:
* http://goldendict.org/

!! ~StarDict
1. Instalar el programa desde Synaptic
2. Descargar y descomprimir otros diccionarios (dificultad para que funcione con freedict)
3. Mover los diccionarios a /usr/share/stardict/dic
4. Abriri/Reiniciar la aplicación

Características:
* Diccionario internacional multiplataforma
* Traduce las palabras al seleccionarlas
* Formato de diccionario stardict
* Se deben descargar los archivos de diccionario por separado

Más información
* http://stardict.sourceforge.net

!! ~KTranslator
1. Instalar el programa desde Synaptic
2. Instalar los diccionarios dict-freedict
3. Cargar los diccionarios que están en /usr/share/dictd/

Características:
* Traductor de palabras
* Puede utilizar archivos de diccionarios externos (p.e. con los diccionarios de opendict)
* Se puede seleccionar palabras en la pantalla utilizando la tecla control
* Se puede escuchar la pronunciación con el programa Festival

Más información
* http://ktranslator.sourceforge.net
* http://ktranslator.sourceforge.net/dictionaries.html

!! Otros diccionarios
i2e
* Diccionario ingles-español o español-ingles
* Traduce palabras al ser seleccionadas en el monitor con el ratón o teclado (aunque se pierde esta funcionalidad mientras la aplicación este abierta)
wordtrans
* Traductor de palabras multilenguaje por linea de comandos
* Utilizar archivos de diccionarios externos (p.e. i2e)
~OpenDict
* Diccionario multiplataforma
* Trabaja con diccionarios en formato dict, slowo y mova
* Tiene herramienta de pronunciación
Festival
* Sistema sintetizador de voz multilengua
* Trabaja con ktranslator
eSpeak
* Sintetizador de voz para ingles
* http://espeak.sourceforge.net
* Parámetros: -s160 es la velocidad, -v[código: en, fr, es] para utilizar otro lenguaje, -f archivo

babiloo
* http://www.babiloo-project.org

Gnome Translate
* http://www.nongnu.org/libtranslate/gnome-translate/

! Diccionarios en línea
* http://www.wordreference.com/
* http://diccionario.babylon.com/

! Traductores en línea
* http://www.google.com/language_tools?hl=es
* http://traductor.babylon.com/
* http://www.stardict.org/

/***
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.
***/
//{{{

// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'ulises-linux';

// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too

// disable autosave in d3
if (window.location.protocol != "file:")
	config.options.chkGTDLazyAutoSave = false;

// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
	SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
	SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
	OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
	DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
	MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}

// create some shadow tiddler content
merge(config.shadowTiddlers,{

'TspotOptions':[
 "tiddlyspot password:",
 "<<option pasUploadPassword>>",
 ""
].join("\n"),

'TspotControls':[
 "| tiddlyspot password:|<<option pasUploadPassword>>|",
 "| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
 "| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),

'WelcomeToTiddlyspot':[
 "This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
 "<<tiddler TspotControls>>",
 "See also GettingStarted.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n"),

'TspotSidebar':[
 "<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n")

});
//}}}
Agregador o lector de fuentes o canales de noticias (feed) en formato RSS que funciona desde un servidor web. Es útil cuando se quiere tener cuentas independientes para cada usuario, para que hagan su seguimiento a canales de forma privada. Más información en: http://tt-rss.org/

! Pre-requisitos
* [[Apache]]
* [[MySQL]]

! Instalación
1. Descargar el archivo tt-rss-*.tar.gz de http://tt-rss.org y descomprimir en el servidor.

2. Crear una base de datos y un usuario en ~MySQL o en Postgres, y ejecutar las sentencias SQL que se encuentran en el archivo schema/ttrss_schema_mysql.sql

3. Copiar el archivo config.php-dist a config.php y editarlo para colocar la información de la base de datos y usuario, además de otros parámetros de configuración que se quieran cambiar.

4. Configurar la forma de consultar las fuentes de noticias. Se recomienda escoger la actualización a través de un proceso en background si se tiene acceso de administrador al servidor. Para ello se deben seguir los siguientes pasos:
* Habilitar el parámetro {{{ENABLE_UPDATE_DAEMON}}} en el archivo config.php
* Descargar y ubicar el archivo de configuración:
{{{
 # wget http://tt-rss.org/trac/attachment/wiki/UpdatingFeeds/tt-rss.default?format=raw --output-document=/etc/default/tt-rss
}}}
* Descargar y ubicar el script:
{{{
 # wget http://tt-rss.org/trac/attachment/wiki/UpdatingFeeds/tt-rss.initd?format=raw --output-document=/etc/init.d/tt-rss
 # chmod +x /etc/init.d/tt-rss
}}}
* Configurar el script para que se inicie automáticamente con el servidor:
{{{
 # update-rc.d tt-rss defaults
}}}
* Si el directorio de instalación esta en un lugar diferente a /var/www/tt-rss, cambiar esto en el archivo /etc/default/tt-rss.
* Iniciar el proceso:
{{{
 # /etc/init.d/tt-rss start
}}}

5. Deshabilitar el parámetro ~SINGLE_USER_MOD en el archivo config.php para que el sistema trabaje en modo multi-usuario.

! Referencias
[1] http://tt-rss.org/trac/wiki/InstallationNotes
[2] http://tt-rss.org/trac/wiki/UpdatingFeeds


Para que el archivo de persistencia de una USB Booteable con Ubuntu sea mayor a los 4GB, se deben seguir los siguientes pasos:
# Crear la USB Booteable con un mínimo de espacio de persistencia.
## En Windows, Linux o Mac: http://unetbootin.sourceforge.net 
## En Ubuntu: {{{usb-creator}}} o {{{Creador de disco de arranque}}} 
# Cuando la USB este lista, se inserta nuevamente y se borra el archivo {{{casper-rw}}}
# Con la aplicación {{{GParted}}} se reduce la partición Ext32 a 1 GB (no se requiere más) y se crear una partición que se llame {{{casper-rw}}} con el espacios restante.
# Se inicio la USB Bootable en un equipo y se verifica el espacio disponible para el /  
Ulises Hernandez Pino
ulises@unicauca.edu.co
http://www.iered.org/miembros/ulises
! Instalación y configuración de UniFI Controller

1. Descargar el ~UniFI Controller para Windows, Linux o Mac, de: https://www.ubnt.com/download/unifi/

2. Instalar el paquete {{{unifi_sysvinit_all.deb}}}, con esto se instala una aplicación web cuyo servidor se configura en el sistema para que inicie automáticamente. Si esto se deshabilita (con {{{sysv-rc-conf}}} por ejemplo), se debe iniciar manualmente:
{{{
# /etc/init.d/unifi start
}}}

3. Al acceder a la interfaz web, el controlador realiza un escaneo de los AP que están pendientes por configurar en la misma red (no muestra los que ya han sido adoptados por otros controladores): https://IP_Servidor:8443

Más información en:
* https://help.ubnt.com/hc/en-us/categories/200320654-UniFi-Wireless

! Configuración inicial de un Ubiquiti AP (~UAP)

Existen varios escenarios:

!!! AP conectado de forma permanente a un Controlador ~UniFi en la misma red local

1. Conectar el computador con el Controlador y el AP en la misma red local. Esta red debe tener un Servidor DHCP.

2. Si el AP no tiene los valores de fabrica se debe restablecer los parámetros, esto se puede hacer de tres formas: a) Con el botón de reset en el AP; b) Con el botón de reset en el adaptador de energía; o c) Después de conocer la IP del AP (se puede utilizar la utilidad {{{fing}}} en el computador), conectar a través de ssh (requiere el usuario y contraseña del controlador anterior) y ejecutar el comando {{{set-default}}}.

3. Ingresar a la página web del Controlador y adoptar el AP.

4. Crear el Grupo de Usuario (si se va a limitar el uso del ancho de banda), el Grupo Inalámbrico y la Red Inalámbrica, y luego asignar un nombre al AP, Los canales, La potencia de Tx y El Grupo Inalámbrico.

!!! AP que va a funcionar sólo en una red

Son los mismos pasos que en el escenario anterior, sólo que al desconectar el computador con el Controlador, el AP funcionará con los parámetros por defecto. Deja de funcionar el bloqueo de dispositivos por MAC, los cambios de parámetros en clientes específicos (por ejemplo el uso del ancho de banda) y el Portal Cautivo o Hotspot.

!!! AP conectado de forma permanente a un Controlador ~UniFi en Internet

1. Conectar el computador con el Controlador y el AP en la misma red local. Esta red debe tener un Servidor DHCP y tener salida a Internet.

2. Ingresar a la página web del Controlador en Internet.

3. Si el AP no tiene los valores de fabrica se debe restablecer los parámetros, esto se puede hacer de tres formas: a) Con el botón de reset en el AP; b) Con el botón de reset en el adaptador de energía; o c) Después de conocer la IP del AP (se puede utilizar la utilidad {{{fing}}} en el computador), conectar a través de ssh (requiere el usuario y contraseña del controlador anterior) y ejecutar el comando {{{set-default}}}.

4. Ingresar al AP a través de SSH con el usuario y contraseña por defecto (ubnt / ubnt) y establecer la IP o el nombre de dominio del Controlador con el comando {{{set-inform}}}. Por ejemplo: {{{set-inform http://192.192.192.192:8080/inform}}}

5. Verificar que el AP aparezca en el Controlador y dar clic en la opción Adoptar.

6. Volver a establecer nuevamente en el AP, la dirección IP o nombre de dominio del Controlador. Este paso es muy importante, porque de lo contrario aparecerá que el AP esta desconectado.

7. Crear el Grupo de Usuario (si se va a limitar el uso del ancho de banda), el Grupo Inalámbrico y la Red Inalámbrica, y luego asignar un nombre al AP, Los canales, La potencia de Tx y El Grupo Inalámbrico.

Más información
* https://help.ubnt.com/hc/en-us/articles/205146020-UniFi-Advanced-Adoption-of-a-Managed-By-Other-UAP
* https://help.ubnt.com/hc/en-us/articles/205143490-UniFi-How-to-Reset-the-UniFi-Access-Point-to-Factory-Defaults
* https://help.ubnt.com/hc/en-us/articles/204909374-UniFi-What-is-the-default-username-password-for-UAPs-and-controller-
* https://help.ubnt.com/hc/en-us/articles/204976094-UniFi-What-protocol-does-the-controller-use-to-communicate-with-the-UAP-
* https://help.ubnt.com/hc/en-us/articles/218850057-Intro-to-Networking-How-to-Establish-a-Connection-Using-SSH
* https://help.ubnt.com/hc/en-us/articles/204909754-UniFi-Device-Adoption-Methods-for-Remote-UniFi-Controllers
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 12/07/2010 23:13:49 | Ulises | [[ulises-linux.html|file:///home/ulises/Documents/infrared/ulises-linux.html]] | [[store.cgi|http://ulises-linux.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ulises-linux.tiddlyspot.com/index.html]] | . | ok |
| 04/01/2011 16:11:35 | Ulises | [[ulises-linux.html|file:///home/ulises/Documents/infrared/ulises-linux.html#%5B%5BStreaming%20ffserver%5D%5D]] | [[store.cgi|http://ulises-linux.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ulises-linux.tiddlyspot.com/index.html]] | . | ok |
| 05/01/2011 00:03:08 | Ulises | [[ulises-linux.html|file:///home/ulises/Documents/infrared/ulises-linux.html]] | [[store.cgi|http://ulises-linux.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ulises-linux.tiddlyspot.com/index.html]] | . | ok |
| 11/02/2011 21:56:44 | Ulises | [[ulises-linux.html|file:///home/ulises/Documents/infrared/ulises-linux.html]] | [[store.cgi|http://ulises-linux.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ulises-linux.tiddlyspot.com/index.html]] | . |
| 31/05/2011 09:22:59 | Ulises | [[ulises-linux.html|file:///home/ulises/Documents/infrared/ulises-linux.html]] | [[store.cgi|http://ulises-linux.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ulises-linux.tiddlyspot.com/index.html]] | . |
| 05/07/2011 21:12:24 | Ulises | [[ulises-linux.html|file:///home/ulises/Documentos/infrared/ulises-linux.html]] | [[store.cgi|http://ulises-linux.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ulises-linux.tiddlyspot.com/index.html]] | . |
| 05/07/2011 21:13:02 | Ulises | [[ulises-linux.html|file:///home/ulises/Documentos/infrared/ulises-linux.html]] | [[store.cgi|http://ulises-linux.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ulises-linux.tiddlyspot.com/index.html]] | . |
| 26/08/2015 07:37:21 | Ulises | [[ulises-linux.html|file:///media/ulises/datos/joiner/documentos/infrared/tiddlywikis/ulises-linux.html]] | [[store.cgi|http://ulises-linux.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ulises-linux.tiddlyspot.com/index.html]] | . |
| 01/01/2018 12:30:02 | Ulises | [[ulises-linux.html|file:///C:/Documents%20and%20Settings/VirtualBox/Mis%20documentos/ulises-linux.html]] | [[store.cgi|http://ulises-linux.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ulises-linux.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 3,
	date: new Date("Feb 24, 2008"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

//
// Environment
//

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;	// true to activate both in Plugin and UploadService
	
//
// Upload Macro
//

config.macros.upload = {
// default values
	defaultBackupDir: '',	//no backup
	defaultStoreScript: "store.php",
	defaultToFilename: "index.html",
	defaultUploadDir: ".",
	authenticateUser: true	// UploadService Authenticate User
};
	
config.macros.upload.label = {
	promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
	promptParamMacro: "Save and Upload this TiddlyWiki in %0",
	saveLabel: "save to web", 
	saveToDisk: "save to disk",
	uploadLabel: "upload"	
};

config.macros.upload.messages = {
	noStoreUrl: "No store URL in parmeters or options",
	usernameOrPasswordMissing: "Username or password missing"
};

config.macros.upload.handler = function(place,macroName,params) {
	if (readOnly)
		return;
	var label;
	if (document.location.toString().substr(0,4) == "http") 
		label = this.label.saveLabel;
	else
		label = this.label.uploadLabel;
	var prompt;
	if (params[0]) {
		prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0], 
			(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
	} else {
		prompt = this.label.promptOption;
	}
	createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};

config.macros.upload.action = function(params)
{
		// for missing macro parameter set value from options
		if (!params) params = {};
		var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
		var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
		var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
		var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
		var username = params[4] ? params[4] : config.options.txtUploadUserName;
		var password = config.options.pasUploadPassword; // for security reason no password as macro parameter	
		// for still missing parameter set default value
		if ((!storeUrl) && (document.location.toString().substr(0,4) == "http")) 
			storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
		if (storeUrl.substr(0,4) != "http")
			storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
		if (!toFilename)
			toFilename = bidix.basename(window.location.toString());
		if (!toFilename)
			toFilename = config.macros.upload.defaultToFilename;
		if (!uploadDir)
			uploadDir = config.macros.upload.defaultUploadDir;
		if (!backupDir)
			backupDir = config.macros.upload.defaultBackupDir;
		// report error if still missing
		if (!storeUrl) {
			alert(config.macros.upload.messages.noStoreUrl);
			clearMessage();
			return false;
		}
		if (config.macros.upload.authenticateUser && (!username || !password)) {
			alert(config.macros.upload.messages.usernameOrPasswordMissing);
			clearMessage();
			return false;
		}
		bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password); 
		return false; 
};

config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir) 
{
	if (!storeUrl)
		return null;
		var dest = bidix.dirname(storeUrl);
		if (uploadDir && uploadDir != '.')
			dest = dest + '/' + uploadDir;
		dest = dest + '/' + toFilename;
	return dest;
};

//
// uploadOptions Macro
//

config.macros.uploadOptions = {
	handler: function(place,macroName,params) {
		var wizard = new Wizard();
		wizard.createWizard(place,this.wizardTitle);
		wizard.addStep(this.step1Title,this.step1Html);
		var markList = wizard.getElement("markList");
		var listWrapper = document.createElement("div");
		markList.parentNode.insertBefore(listWrapper,markList);
		wizard.setValue("listWrapper",listWrapper);
		this.refreshOptions(listWrapper,false);
		var uploadCaption;
		if (document.location.toString().substr(0,4) == "http") 
			uploadCaption = config.macros.upload.label.saveLabel;
		else
			uploadCaption = config.macros.upload.label.uploadLabel;
		
		wizard.setButtons([
				{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption, 
					onClick: config.macros.upload.action},
				{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
				
			]);
	},
	options: [
		"txtUploadUserName",
		"pasUploadPassword",
		"txtUploadStoreUrl",
		"txtUploadDir",
		"txtUploadFilename",
		"txtUploadBackupDir",
		"chkUploadLog",
		"txtUploadLogMaxLine"		
	],
	refreshOptions: function(listWrapper) {
		var opts = [];
		for(i=0; i<this.options.length; i++) {
			var opt = {};
			opts.push();
			opt.option = "";
			n = this.options[i];
			opt.name = n;
			opt.lowlight = !config.optionsDesc[n];
			opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
			opts.push(opt);
		}
		var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
		for(n=0; n<opts.length; n++) {
			var type = opts[n].name.substr(0,3);
			var h = config.macros.option.types[type];
			if (h && h.create) {
				h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
			}
		}
		
	},
	onCancel: function(e)
	{
		backstage.switchTab(null);
		return false;
	},
	
	wizardTitle: "Upload with options",
	step1Title: "These options are saved in cookies in your browser",
	step1Html: "<input type='hidden' name='markList'></input><br>",
	cancelButton: "Cancel",
	cancelButtonPrompt: "Cancel prompt",
	listViewTemplate: {
		columns: [
			{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
			{name: 'Option', field: 'option', title: "Option", type: 'String'},
			{name: 'Name', field: 'name', title: "Name", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'} 
			]}
};

//
// upload functions
//

if (!bidix.upload) bidix.upload = {};

if (!bidix.upload.messages) bidix.upload.messages = {
	//from saving
	invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
	backupSaved: "Backup saved",
	backupFailed: "Failed to upload backup file",
	rssSaved: "RSS feed uploaded",
	rssFailed: "Failed to upload RSS feed file",
	emptySaved: "Empty template uploaded",
	emptyFailed: "Failed to upload empty template file",
	mainSaved: "Main TiddlyWiki file uploaded",
	mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
	//specific upload
	loadOriginalHttpPostError: "Can't get original file",
	aboutToSaveOnHttpPost: 'About to upload on %0 ...',
	storePhpNotFound: "The store script '%0' was not found."
};

bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
	var callback = function(status,uploadParams,original,url,xhr) {
		if (!status) {
			displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
			return;
		}
		if (bidix.debugMode) 
			alert(original.substr(0,500)+"\n...");
		// Locate the storeArea div's 
		var posDiv = locateStoreArea(original);
		if((posDiv[0] == -1) || (posDiv[1] == -1)) {
			alert(config.messages.invalidFileError.format([localPath]));
			return;
		}
		bidix.upload.uploadRss(uploadParams,original,posDiv);
	};
	
	if(onlyIfDirty && !store.isDirty())
		return;
	clearMessage();
	// save on localdisk ?
	if (document.location.toString().substr(0,4) == "file") {
		var path = document.location.toString();
		var localPath = getLocalPath(path);
		saveChanges();
	}
	// get original
	var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
	var originalPath = document.location.toString();
	// If url is a directory : add index.html
	if (originalPath.charAt(originalPath.length-1) == "/")
		originalPath = originalPath + "index.html";
	var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
	var log = new bidix.UploadLog();
	log.startUpload(storeUrl, dest, uploadDir,  backupDir);
	displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
	if (bidix.debugMode) 
		alert("about to execute Http - GET on "+originalPath);
	var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

bidix.upload.uploadRss = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		if(status) {
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
			bidix.upload.uploadMain(params[0],params[1],params[2]);
		} else {
			displayMessage(bidix.upload.messages.rssFailed);			
		}
	};
	// do uploadRss
	if(config.options.chkGenerateAnRssFeed) {
		var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
		var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
		var rssString = generateRss();
		// no UnicodeToUTF8 conversion needed when location is "file" !!!
		if (document.location.toString().substr(0,4) != "file")
			rssString = convertUnicodeToUTF8(rssString);	
		bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
	} else {
		bidix.upload.uploadMain(uploadParams,original,posDiv);
	}
};

bidix.upload.uploadMain = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		var log = new bidix.UploadLog();
		if(status) {
			// if backupDir specified
			if ((params[3]) && (responseText.indexOf("backupfile:") > -1))  {
				var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
				displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
			}
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
			store.setDirty(false);
			log.endUpload("ok");
		} else {
			alert(bidix.upload.messages.mainFailed);
			displayMessage(bidix.upload.messages.mainFailed);
			log.endUpload("failed");			
		}
	};
	// do uploadMain
	var revised = bidix.upload.updateOriginal(original,posDiv);
	bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};

bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
	var localCallback = function(status,params,responseText,url,xhr) {
		url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
		if (xhr.status == 404)
			alert(bidix.upload.messages.storePhpNotFound.format([url]));
		if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
			alert(responseText);
			if (responseText.indexOf("Debug mode") >= 0 )
				responseText = responseText.substring(responseText.indexOf("\n\n")+2);
		} else if (responseText.charAt(0) != '0') 
			alert(responseText);
		if (responseText.charAt(0) != '0')
			status = null;
		callback(status,params,responseText,url,xhr);
	};
	// do httpUpload
	var boundary = "---------------------------"+"AaB03x";	
	var uploadFormName = "UploadPlugin";
	// compose headers data
	var sheader = "";
	sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
	sheader += uploadFormName +"\"\r\n\r\n";
	sheader += "backupDir="+uploadParams[3] +
				";user=" + uploadParams[4] +
				";password=" + uploadParams[5] +
				";uploaddir=" + uploadParams[2];
	if (bidix.debugMode)
		sheader += ";debug=1";
	sheader += ";;\r\n"; 
	sheader += "\r\n" + "--" + boundary + "\r\n";
	sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
	sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
	sheader += "Content-Length: " + data.length + "\r\n\r\n";
	// compose trailer data
	var strailer = new String();
	strailer = "\r\n--" + boundary + "--\r\n";
	data = sheader + data + strailer;
	if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
	var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
	if (!posDiv)
		posDiv = locateStoreArea(original);
	if((posDiv[0] == -1) || (posDiv[1] == -1)) {
		alert(config.messages.invalidFileError.format([localPath]));
		return;
	}
	var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
				store.allTiddlersAsHtml() + "\n" +
				original.substr(posDiv[1]);
	var newSiteTitle = getPageTitle().htmlEncode();
	revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
	revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
	revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
	revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
	revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
	return revised;
};

//
// UploadLog
// 
// config.options.chkUploadLog :
//		false : no logging
//		true : logging
// config.options.txtUploadLogMaxLine :
//		-1 : no limit
//      0 :  no Log lines but UploadLog is still in place
//		n :  the last n lines are only kept
//		NaN : no limit (-1)

bidix.UploadLog = function() {
	if (!config.options.chkUploadLog) 
		return; // this.tiddler = null
	this.tiddler = store.getTiddler("UploadLog");
	if (!this.tiddler) {
		this.tiddler = new Tiddler();
		this.tiddler.title = "UploadLog";
		this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
		this.tiddler.created = new Date();
		this.tiddler.modifier = config.options.txtUserName;
		this.tiddler.modified = new Date();
		store.addTiddler(this.tiddler);
	}
	return this;
};

bidix.UploadLog.prototype.addText = function(text) {
	if (!this.tiddler)
		return;
	// retrieve maxLine when we need it
	var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
	if (isNaN(maxLine))
		maxLine = -1;
	// add text
	if (maxLine != 0) 
		this.tiddler.text = this.tiddler.text + text;
	// Trunck to maxLine
	if (maxLine >= 0) {
		var textArray = this.tiddler.text.split('\n');
		if (textArray.length > maxLine + 1)
			textArray.splice(1,textArray.length-1-maxLine);
			this.tiddler.text = textArray.join('\n');		
	}
	// update tiddler fields
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	store.addTiddler(this.tiddler);
	// refresh and notifiy for immediate update
	story.refreshTiddler(this.tiddler.title);
	store.notify(this.tiddler.title, true);
};

bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	if (!this.tiddler)
		return;
	var now = new Date();
	var text = "\n| ";
	var filename = bidix.basename(document.location.toString());
	if (!filename) filename = '/';
	text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
	text += config.options.txtUserName + " | ";
	text += "[["+filename+"|"+location + "]] |";
	text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
	text += uploadDir + " | ";
	text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
	text += backupDir + " |";
	this.addText(text);
};

bidix.UploadLog.prototype.endUpload = function(status) {
	if (!this.tiddler)
		return;
	this.addText(" "+status+" |");
};

//
// Utilities
// 

bidix.checkPlugin = function(plugin, major, minor, revision) {
	var ext = version.extensions[plugin];
	if (!
		(ext  && 
			((ext.major > major) || 
			((ext.major == major) && (ext.minor > minor))  ||
			((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
			// write error in PluginManager
			if (pluginInfo)
				pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
			eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
	}
};

bidix.dirname = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(0, lastpos);
	} else {
		return filePath.substring(0, filePath.lastIndexOf("\\"));
	}
};

bidix.basename = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("#")) != -1) 
		filePath = filePath.substring(0, lastpos);
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(lastpos + 1);
	} else
		return filePath.substring(filePath.lastIndexOf("\\")+1);
};

bidix.initOption = function(name,value) {
	if (!config.options[name])
		config.options[name] = value;
};

//
// Initializations
//

// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);

// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");

//optionsDesc
merge(config.optionsDesc,{
	txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
	txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
	txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
	txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
	txtUploadUserName: "Upload Username",
	pasUploadPassword: "Upload Password",
	chkUploadLog: "do Logging in UploadLog (default: true)",
	txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});

// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');


// Backstage
merge(config.tasks,{
	uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");


//}}}

! w

! finger
Versión de Ubuntu/Xubuntu
{{{
$ cat /etc/issue.net
}}}
Versión y nombre clave de Ubuntu/Xubuntu
{{{
$ lsb_release -a
}}}
Versión kernel y si es de 32 o 64 bits
{{{
$ uname -a
}}}
Programa: VirtualDub
Fuente: Sony Handycam USB

Parametros de Captura (Minima Calidad):
Velocidad: 320x240, 15 fps
Audio: 22050 hz, 16 bits, Mono

Parametros de Edición:
Codec Video: xvid, 
   Target bitrate: 1100 kbps (para calidad 20%)
Codec Audio: mp3, 24 Kbit/s, 22050 hz,  Mono
Instalación de librearías:
* libaa   (ascii blanco y negro)
* libcaca (ascii color)

Instalación de visores:
* aview (visor basado en aa)
* caca-demo (visor basado en caca)

Visualización de archivos de imágen:
{{{
asciiview archivo.img
}}}
tecla s: graba la imagen es ascii
1 texto file
3 Nestcapeized html (aumentar ancho en 30%)
 
Reproducción de videos:
{{{
mplayer -vo aa archivo.vid
mplayer -vo caca archivo.vid
}}}
1. Conecte la cámara a un puerto USB

2. Por línea de comandos compruebe que es reconocida por el sistema:
{{{
$ lsusb
Bus 002 Device 002: ID 0c45:602e Microdia VideoCAM Messenger
}}}
También se puede saber los dispositivos que están conectados, con:
{{{
$ xawtv -hwscan
}}}
Con base en la referencia se debe buscar la forma de instalar los drivers para esta cámara en el sistema operativo que se tiene.

! Camara Genius ~VideoCAM Messenger en Debian 5.0

1. Instalar el paquete de drivers para webcams y digicams basados en el chip spca5xx para Linux
{{{
# apt-get install gspca-modules-2.6.26-1-486
}}}
Instale el paquete ''gspca-modules-xxxxx'' donde xxxxx depende del kernel y de la arquitectura en la que este instalado. Puede usar el comando {{{uname -a}}} para obtener esta información

! Ubuntu 8.04 
Se instala el paquete:
{{{
# apt-get install spca5xx-source 
}}}

4. Pruebe que los módulos quedaron cargados
{{{
# lsmod | grep sn9c102
}}}

Después de esto se puede probar el funcionamiento con algún software de visualización, como los que se encuentran en: [[WebCam Visualizadores]]

5. Puede instalar además una herramienta de configuración denominada ~SpcaGui, para lo cual se requiere instalar previamente:
{{{
# apt-get install  ibsdl1.2-dev libsdl-image1.2-dev
}}}

Luego descargue la utilidad, descomprima y compile:
{{{
# wget http://mxhaard.free.fr/spca50x/Download/spcagui20060127.tar.gz
# tar xzf spcagui20060127.tar.gz
# cd spcagui2006012
# make
# make install
# make clean
}}}

Para ejecutar la utilidad:
{{{
$ spcagui
}}}

! Ubuntu 9.10 y 10.04
No se requiere instalar nada!, abra la aplicación Cheese y utilice.
Para utilizar una Webcam Genius ~VideoCAM Messenger con skype y ffmepg / ffplay requiere cargar previamente la librería v4l1compat.so:
{{{
$ export LD_PRELOAD="/usr/lib/libv4l/v4l1compat.so"
$ ffplay -s 320x240 -f video4linux2 /dev/video0
}}}
o
{{{
$ LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype
}}}

Más información en:
* http://www.slec.net/UsoCamarasWeb?highlight=%28videocam%29%7C%28messenger%29#head-7ccb3da92bee61097dc5984fa6fb088be3799dd2
* http://www.linuxjournal.com/video/get-your-webcam-working-gspca

Servidor de stream de webcam o fotografías

1. Instalar el módulo de la WebCam y probar su funcionamiento.

2. Instalar el paquete webcam-server (y apache si aún no esta instalado)

3. Copiar la carpeta /usr/share/doc/webcam-server/applet/ en /var/www (o en el directorio root de apache)

4. Modificar la página webcam.html (puerto, tamaño del applet) de acuerdo con los parámetros con los que se va a iniciar el servicio.

5. Iniciar el servicio:
{{{
webcam-server -d /dev/video0 -p 8001  -c "Joiner %d/%m/%Y %H:%M:%S [version: %%V, %%f frames, %%v viewers]" -g 640x480 -q 100
}}}

Probar uso de ancho de banda de tres posibilidades: subir fotos a servidor ftp (propio y externo), video publicado en propio equipo y streaming con freej
* ffplay y ffmpeg (visualizar y grabar)
{{{
$ export LD_PRELOAD="/usr/lib/libv4l/v4l1compat.so"   (Requerimiento en Ubuntu 10.04 en adelante para las Webcams)
$ ffplay -s 464x464 -f video4linux2 /dev/video0
$ ffmpeg -f video4linux2 -s 464x464 -i /dev/video0 captura.mpg
$ ffmpeg -f video4linux2 -s 464x464 -r 15 -i /dev/video0 captura.avi
$ ffmpeg -f oss -ar 22050 -ab 32k -i /dev/dsp -f video4linux2 -s 464x464 -i captura.mpg
}}}
* vlc
{{{
$ vlc v4l2:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/audio2" :v4l-norm=3
}}}
* xawtv (sintonizador de tv)
{{{
xawtv -hwscan    (visualiza los dispositivos de video conectados)
xawtv
}}}
* camorama: visor, toma fotografías, graba video local y remoto
{{{
camorama
}}}
* Genera stream de una webcam en una webapplet en el mismo equipo
[[webcam-server|WebCam Server]]
* Genera stream en ASCII
{{{
hasciicam -m html -d /dev/video0 -s 160x120
}}}
* mplayer & webcam capture. Más información en: http://mydebian.blogdns.org/?p=120
{{{
mplayer -cache 128 -tv driver=v4l:width=320:height=240:outfmt=i420:device=/dev/video0 -vc rawi420 -vo xv tv://
mencoder -tv driver=v4l:width=320:height=240:device=/dev/video0 -nosound -ovc lavc -o wcrecording.avi tv:// 
mencoder -tv driver=v4l:fps=15:height=288:width=352 -ovc lavc -lavcopts vcodec=mpeg4 -vf scale=640:480 -o movie.avi tv://
}}}
* Sube imágenes a un servidor en intervalos regulares
{{{
camstream
webcam
webcamd
}}}

Más información
* https://help.ubuntu.com/community/Webcam


! airmon-ng
Activa una interfase wireless para el modo de monitoreo.
{{{
# airmon-ng start wlan0
}}}

! airodump-ng
Herramienta para el monitoreo y la captura de paquetes.
{{{
# airodump-ng wlan0
}}}
Monitoreo a través de la interfaz eth1 y en todos los canales, las transmisiones que se están realizando. //Se instala con el paquete 

{{{
# airodump-ng -i -w br5 -c 5 wlan0
}}}
-i : sólo salva la información para fines de crakeo y se TIENE que utilizar con la opcion -w
-w prefijo : para los archivos que se guardan
-c canal : se indica el canal a escuchar
-b a/b/g : se indica la banda

! nmcli
Monitor de canales ~WiFi por línea de comandos, viene con el paquete {{{NetworkManager}}}
{{{
nmcli d wifi
}}}

! ~LinSSID
Monitor de canales ~WiFi a través de interfaz gráfica (basada en ~QT5).

Información de instalación en:
* http://linuxg.net/how-to-install-linssid-2-7-on-ubuntu-14-10-ubuntu-14-04-debian-8-debian-7-and-derivative-systems/



!Comandos Windows
<<tagging ComandosWindows>> 
Problema:
{{{
$ wine apastyle.exe 

err:module:import_dll Library MSVBVM50.DLL (which is needed by L"Z:\\media\\sda6\\md\\doctorado\\9_tesis\\normas-bibliografia\\apastyle.exe") not found

err:module:LdrInitializeThunk Main exe initialization for L"Z:\\media\\sda6\\md\\doctorado\\9_tesis\\normas-bibliografia\\apastyle.exe" failed, status c0000135
}}}

Solución:
* Copiar los archivos windows/system32/msvbvm50.dll y windows/system32/msvbvm60.dll de un sistema Windows XP en .wine/drive_c/windows/system32/ y cambiarle los permisos. Encontrado en http://mission4today.com/index.php?name=Downloads&file=details&id=325
Analizador de protocolos de red, antes denominado Ethereal. Más información en: 
* http://www.wireshark.org/
* http://www.wireshark.org/docs/wsug_html_chunked/
* http://www.wireshark.org/docs/man-pages/
* http://cert.inteco.es/extfrontinteco/img/File/intecocert/EstudiosInformes/cert_inf_seguridad_analisis_trafico_wireshark.pdf

Inicio y Detección de Captura en Modo Grafico 
~Ctrl-K Inicia Captura
~Ctrl-E Detiene Captura

! Filtering while capturing
A capture filter takes the form of a series of primitive expressions connected by conjuctions (and/or) and optionally preceeded by not: ''[not] primitive [and|or [not] primitive ...]''

A primitive is simply one of the following:
{{{
  [src|dst] host <host|IP>
  ether [src|dst] host <ehost>
  gateway host <host>
  [src|dst] net <net> [{mask <mask>}|{len <len>}]
  [tcp|udp] [src|dst] port <port>
  less|greater <length>
  ip|ether proto <protocol>
  ether|ip broadcast|multicast
  <expr> relop <expr> -> see the tcpdump man pages for more details. 
}}}

Examples:
{{{
  tcp port 23 and host 10.0.0.5
  tcp port 23 and not host 10.0.0.5
}}}

! Filtering packets while viewing
You can build display filters that compare values using a number of different comparison operators.
{{{
Equal ==
ip.addr==10.0.0.5

Not equal !=
ip.addr!=10.0.0.5

Greater than >
frame.pkt_len > 10

Less than <
frame.pkt_len < 128

Greater than or equal to >=
frame.pkt_len >= 0x100

Less than or equal to <=
frame.pkt_len <= 0x20
}}}

You can combine filter expressions in Ethereal using the logical operators
{{{
Logical AND
ip.addr==10.0.0.5 and tcp.flags.fin

Logical OR
ip.addr==10.0.0.5 or ip.addr==192.1.1.1

Logical XOR
tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29

Logical NOT
not llc
}}}

{{{
udp.port Source or Destination Port Unsigned 16-bit integer
udp.dstport Destination Port Unsigned 16-bit integer
udp.srcport Source Port Unsigned 16-bit integer  

tcp.port Source or Destination Port Unsigned 16-bit integer
tcp.dstport Destination Port Unsigned 16-bit integer 
tcp.srcport Source Port Unsigned 16-bit integer
tcp.flags.syn Syn Boolean
tcp.flags.ack Acknowledgment Boolean
tcp.flags.reset Reset Boolean
tcp.flags.fin Fin Boolean
tcp.flags.push Push Boolean

ip.addr Source or Destination Address IPv4 address
ip.src Source IPv4 address
ip.dst Destination IPv4 address
ip.proto Protocol

ftp.request Request Boolean TRUE if FTP request
ftp.request.arg Request arg String  
ftp.request.command Request command String  
ftp.response Response Boolean TRUE if FTP response
ftp.response.arg Response arg String  
ftp.response.code Response code Unsigned 32-bit integer  

eth.addr Source or Destination Address 6-byte Hardware (MAC)
eth.dst Destination 6-byte Hardware (MAC)
eth.src Source 6-byte Hardware (MAC)

not tcp.flags.reset==1 and not tcp.flags.syn==1 and not eth.type==ARP and not ip.proto==0x01 (ICMP)
not ip.addr==127.0.0.1 and not eth.addr==ff:ff:ff:ff:ff:ff and not eth.type==ARP

ip.proto==0x11 and not ip.proto==0x01 and not eth.type==ARP (ICMP,UDP)
ip.proto==0x06 and not tcp.flags.reset==1 (TCP) 
}}}

Example: 
{{{
ip.addr==10.0.0.5
http matches Pass
}}}







Es un sistema para la creación de blogs, desarrollado en PHP y MySQL, bajo licencia GPL y con una enorme comunidad de desarrolladores y diseñadores, que se encargan de desarrollarlo en general o crear plugins y temas.

Más información en:
* http://es.wikipedia.org/wiki/WordPress
* http://es.wordpress.org/

! Prerrequisitos
* [[Apache]] con el módulo rewrite_module
* [[MySQL]]

! Instalación
1. Descargar y descomprimir el archivo de instalación de: http://es.wordpress.org/

2. Crear una base de datos y un usuario con permisos de escritura.

3. Configurar Apache dependiendo de la ruta desde la cual se accederá a los blogs: como dominio (ej: misblogs.com), como subdirectorio (ej: midominio.org/blogs) o como subdominio (ej: blogs.midominio.org). Revisar que en la directiva <Directory>, el parámetro ~AllowOverride tenga las opciones "~FileInfo Options".

4. Editar el archivo {{{wp-config-sample.php}}} con la información de la base de datos y renombrarlo como {{{wp-config.php}}}.

5. Ingresar a la URL http://tudominio.com/wp-admin/install.php para crear las tablas necesarias e iniciar la configuración básica.

! Plugins
* ''Sociable-30'': agrega iconos para compartir el contenido con una gran variedad de redes sociales, pero no incluye el "me gusta" o el Like. http://wordpress.org/extend/plugins/sociable-30/
* ''Tweet, Like, Google +1 and Share'' es mejor que "Add Twitter, Facebook Like, Google plus one Social share": agrega "me gusta" de Twitter, Facebook y Google+. http://wordpress.org/extend/plugins/only-tweet-like-share-and-google-1/
* ''~WP-Stats-Dashboard'' requiere ''Stats'' y cuenta en http://wordpress.com: generación de estadísticas. http://wordpress.org/extend/plugins/stats/screenshots/ y http://wordpress.org/extend/plugins/wp-stats-dashboard/installation/
* ''WP Super Cache'': para mejorar la velocidad de respuesta del blog. http://wordpress.org/extend/plugins/wp-super-cache/
* ''WP Security Scan'': para monitorear diferentes opciones de seguridad. http://wordpress.org/extend/plugins/wp-security-scan/
* ''Akismet'': para spam
* ''Disable Google Fonts'' para evitar conexiones a sitios externos, cuando se esta en un entorno de trabajo local.


! Conexión remota al entorno X
!! Configuración
1. Edita el fichero /etc/gdm/gdm_conf de la máquina que ejecuta el servidor X. Esto es válido si se usa gdm como gestor de conexión. Si usas kdm o xdm la configuración puede variar.
2. Busca la sección [xdmcp], y activa la opción Enable=true.
3. Es muy recomendable dejar la opción: ~AllowRemoteRoot=false para evitar problemas de seguridad.
3. Ahora busca la sección [server-Standard] y edita la opción command para que NO incluya el argumento -nolisten tcp.

!! Conexión  Remota
{{{
    user@client:~$ X :0.1 -query [server_host]
}}}
El 0.1 indica el display (monitor físico) y el screen (visualización de un entorno de escritorio gráfico). Normalmente variará entre 0.0, 0.1, 0.2 y 0.3 para un monitor, y se podrá acceder, respectivamente, con ALT F7, F8, F9 y F10.

! Varias sesiones X (screen)  en la misma máquina
{{{
    $ xinit -- :1
}}}
Se abre un segundo cliente X (en F8) que ejecuta únicamente un x-terminal, pero sin gestor de ventanas ni de escritorio.

! Apertura se aplicaciones gráficas a través de SSH
ver [[ssh]]

! Referencia
* http://crysol.inf-cr.uclm.es/node/120



cgiirc es un cliente IRC para la web escrito en Perl.

!1. Instalación
{{{
# apt-get install cgiirc
}}}

!2. Configuración
!!2.1. Apache
Agregar la siguiente definición en /etc/apache2/sites-available/default
{{{
        Alias /irc /usr/lib/cgi-bin/cgiirc
        <Directory /usr/lib/cgi-bin/cgiirc>
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                AddHandler cgi-script .cgi
                Order allow,deny
                Allow from all
                <IfModule mod_dir.c>
                  DirectoryIndex irc.cgi
                </IfModule>
        </Directory>
}}}
Además crear el siguiente enlace simbólico para los iconos:
{{{
# ln -s /usr/share/images/cgiirc /usr/share/apache2/icons/cgiirc
}}}

!!2.2. cgiirc
Editar el archivo /etc/cgiirc/cgiirc.config:
{{{
default_server = irc.freenode.net
default_port = 6667
default_channel = #gluc

image_path = /icons/cgiirc
irc charset = iso-8859-1

allow_non_default = 0
login basic = Nickname, Channel, Server
interface timestamp = 1
interface smilies = 1
}}}
Para obtener información de cada uno de los parámetros que se pueden usar en este archivo de configuración, se puede consultar:
{{{
# zless /usr/share/doc/cgiirc/examples/cgiirc.config.full.gz
}}}
Ahora se debe agregar una regla para permitir conexiones desde cualquier IP en el archivo /etc/cgiirc/ipaccess
{{{
*.*.*.*
}}}
En el archivo /usr/share/doc/cgiirc/examples/ipaccess.example se encuentran ejemplos de reglas para denegar el acceso desde una IP, un rango o el número de conexiones.

Probar ingresando a la dirección: http://polux/irc

!!2.3 Cambio Página de Inicio
Esto se realiza en el archivo /usr/share/cgiirc/interfaces/default.pm


restore -if ...2003-04-24- -aM

restore> add <archivo>
restore> extract

Nota: si pide volumen dar: 1

set owner/mode for '.'? [yn] y



1. Instalar el programa: {{{ecryptfs-utils}}}

2. Crear el directorio donde se almacenará la información cifrada y el directorio de montaje. Pueden ser el mismo.

3. Montar la primera vez con el siguiente comando para la asignación de los parámetros:
{{{
# mount -t ecryptfs ~/directorio ~/directorio

Passphrase: 

Select cipher: 
 1) aes: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
 2) blowfish: blocksize = 16; min keysize = 16; max keysize = 56 (not loaded)
 3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24 (not loaded)
 4) cast6: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
 5) cast5: blocksize = 8; min keysize = 5; max keysize = 16 (not loaded)
Selection [aes]:

Select key bytes: 
 1) 16
 2) 32
 3) 24
Selection [16]:

Enable plaintext passthrough (y/n) [n]:
Enable filename encryption (y/n) [n]: y

Filename Encryption Key (FNEK) Signature [xxxxxxxxxxxxxxxx]: 

Attempting to mount with the following options:
  ecryptfs_unlink_sigs
  ecryptfs_fnek_sig=xxxxxxxxxxxxxxxx
  ecryptfs_key_bytes=24
  ecryptfs_cipher=aes
  ecryptfs_sig=xxxxxxxxxxxxxxxx
}}}
Desmontar:
{{{
# umount ~/directorio
}}}

4. Montar con los parámetros definitivos
{{{
$ mount -t ecryptfs ~/directorio ~/directorio -o ecryptfs_sig=[FNEK],ecryptfs_fnek_sig=[FNEK],ecryptfs_cipher=[Alboritmo],ecryptfs_key_bytes=[Bytes],ecryptfs_passthrough=no,ecryptfs_enable_filename_crypto=yes,ecryptfs_unlink_sigs
[sudo] password: [contraseña de root]
Passphrase: [contraseña de encripción]
}}}
Las opciones que se utilizan, tienen el siguiente significado:
* ecryptfs_sig: es la clave que se utiliza para cifrar los ficheros. Se crear a partir de la contraseña, por tanto, si se utiliza la misma contraseña para diferentes directorios, la clave o llave será la misma.
* ecryptfs_fnek_sig: es la clave que se utiliza para cifrar los nombres de los ficheros. Suele ser igual a la anterior.
* ecryptfs_cipher: es el algoritmo de cifrado a utilizar.
* ecryptfs_key_bytes: es la longitud de la clave para cifrar.
* ecryptfs_passthrough: especifica si se va a permitir guardar ficheros sin cifrar.
* ecryptfs_unlink_sigs: especifica que se vacie el anillo de claves cada vez que se desmonta el directorio,
* key=tipo:opciones. especifica el tipo de contraseña que vamos a utilizar y algunas opciones. El tipo se corresponde con uno de los módulos instalados en /usr/lib*/ecryptfs/, como mínimo suelen ser passphrase y ssl. Las opciones pueden ser:
** passwd para especificar la contraseña directamente,
** passwd_file para utilizar un fichero que contiene la contraseña en la forma passwd=contraseña,
** passwd_fd para utilizar un descriptor de fichero,
** passstdin para pedir la contraseña al usuario,
** salt para especificar un valor hexadecimal de 16 bits como la sal,
** keyfile para especificar el fichero que contiene una clave SSL o RSA.

5. Si se quiere tener privacidad, se pueden mover los directorios de configuración y cache de los siguientes programas al directorio cifrado, y hacer enlaces simbólicos desde el home:
{{{
.mozilla
}}}

De esta forma se pueden crear todos los directorios cifrados que se quieran

Más información:
* http://bodhizazen.net/Tutorials/Ecryptfs
* https://help.ubuntu.com/community/EncryptedPrivateDirectory
* http://terminus.homelinux.com/k/2011/04/21/cifrar-el-contenido-de-dropbox/
! Crear Clave PGP
* Usar aplicación Seahorse que viene con Gnome. Se recomienda utilizar una fecha para que expire.
* Por línea de comandos es:
{{{
$ pgp --gen-key

Por favor seleccione tipo de clave deseado:
   (1) RSA y RSA (predeterminado)
   (2) DSA y Elgamal
   (3) DSA (sólo firmar)
   (4) RSA (sólo firmar)
¿Su selección?:

las claves RSA pueden tener entre 1024 y 4096 bits de longitud.
¿De qué tamaño quiere la clave? (2048):

Por favor, especifique el período de validez de la clave.
         0 = la clave nunca caduca
      <n>  = la clave caduca en n días
      <n>w = la clave caduca en n semanas
      <n>m = la clave caduca en n meses
      <n>y = la clave caduca en n años
¿Validez de la clave (0)?

Necesita un identificador de usuario para identificar su clave. El programa
construye el identificador a partir del Nombre Real, Comentario y Dirección
de Correo electrónico.
Nombre y apellidos:
Dirección de correo electrónico: 
Comentario: 
}}}

! Utilizar con Gedit
* Se debe instalar el paquete seahorse-plugin
* En Gedit se debe activar el componente "Cifrado de texto"

! Utilizar con Nautilus
* Se debe instalar el paquete seahorse-plugin
* Al reiniciar el computador aparece la opción de cifrar en el menú contextual

! Comandos
Lista las Llaves PÚBLICAS disponibles en el equipo para cifrar:
{{{
$ gpg --list-keys
}}}
Exporta la Llave PÚBLICA en texto ASCII (parámetro -a):
{{{
$ gpg -a --export 0x[ID] > public.key
$ gpg -a --export usuario@dominio.com -o public.key
}}}
Lista las Llaves PRIVADAS disponibles en el equipo para descifrar:
{{{
$ gpg --list-secret-key
}}}
Exporta la Llave PRIVADA en texto ASCII:
{{{
$ gpg -a --export-secret-key 0x[ID] > private.key
$ gpg -a --export-secret-key usuario@dominio.com -o public.key
}}}
Importar Llaves Públicas o Privadas
{{{
gpg --import *.key
}}}
Cifrar un archivo:
{{{
$ gpg --encrypt --recipient [usuario@dominio.com] [archivo-original] --output [archivo-cifrado.gpg]
}}}
Decifrar y visualizar un archivo de texto:
{{{
$ gpg --decrypt file.gpg
$ gpg --decrypt file.gpg --output [archivo-decifrado]
}}}

! Servidor de Llaves Públicas
Uno de ellos es: http://pgp.mit.edu

Más información en:
http://www.gnupg.org/gph/es/manual/book1.html
Forma recomendad para descargar los CD de Debian, ya que de esta forma sólo actualiza los paquetes que hacen falta para armar el nuevo CD. Además de esta forma se ahorra ancho de banda y contribuye con la no saturación de los servidores de descarga.
1. Instalar el paquete:
{{{
# apt-get install jigdo-file
}}}
2. Descargar de la página de debian el archivo .jidgo y .template (30MB aproximadamente):
{{{
$ wget http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/i386/jigdo-cd/debian-testing-i386-netinst.jigdo
$ wget http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/i386/jigdo-cd/debian-testing-i386-netinst.template
}}}
3. Iniciar la descarga de paquetes la primera vez:
{{{
$ jigdo-lite debian-testing-i386-netinst.jigdo
}}}
* El programa pregunta si existe un CD antiguo que quiera tomar como base para bajar solo los paquetes que se requieren. Si no se tiene, se presiona la tecla Enter.
* La otra pregunta que le hace es por el servidor del cual se van a descargar los paquetes. Se recomienda uno primario como http://ftp.us.debian.org/debian/ o el de Colombia http://debian.unal.edu.co/debian/
4. Actualizar el CD:
* Se vuelve a descargar los rachivos .jigdo y .template
* Se monta el CD o se carga el .iso
* Se ejecuta {{{jigdo-lite nuevo.jigdo}}} y cuando pregunte por la existencia de un CD antiguo, se especifica la ruta donde esta montado, y luego la dirección del servidor de donde se van a descargar los paquetes.

Más información:
* http://tldp.org/HOWTO/Debian-Jigdo/
* http://el-directorio.org/Como_bajar_los_CDs_de_Debian_con_Jigdo
phpMyAdmin es una herramienta de código libre para administrar MySQL a través de la web. de páginas webs. Más información en: http://es.wikipedia.org/wiki/PhpMyAdmin

!1. Instalación
{{{
# apt-get install phpmyadmin
}}}
En el proceso de instalación escoger la opción:
{{{
Web server to reconfigure automatically: apache2 
}}}
Por defecto, esta instalación permite el ingreso a través de la dirección http://polux.unicauca.edu.co/phpmyadmin

!2. Configuración
Para aumentar el nivel de seguridad se recomienda hacer dos cosas: 1) obligar el acceso a esta aplicación a través de https (redireccionar); 2) establecer una contraseña de acceso en la ruta de la aplicación (directorio con contraseña). Ver: [[Apache]]




Para comparar los archivos de dos directorios locales y copiar los que hacen falta en el destino, sin borrar los que estén en el destino y que no estén en el directorio origen, se tiene el siguiente comando:
{{{
$ rsync -aHv origen/ destino
}}}
* El parámetro -a incluye: r (recursivo), l (enlaces simbólicos), p (mantener permisos), t (mantener la hora), o (mantener propietario), g (mantener grupo)
* El parámetro -v para que de información detallada del proceso
* Se puede agregar el parámetro -H para que mantenga los enlaces duros
Si se quiere que se borren los archivos del directorio destino, cuando estos ya no se encuentre en el directorio origen, se debe agregar lo siguiente:
{{{
$ $ rsync -aHv --delete origen/ destino
}}}
Más información en:
* http://www.vicente-navarro.com/blog/2008/01/13/backups-con-rsync/
* http://www.thegeekstuff.com/2010/09/rsync-command-examples/
* http://magnifico.wordpress.com/2009/06/03/rsync-el-mejor-sistema-de-copias-de-seguridad/
* http://www.mikerubel.org/computers/rsync_snapshots/
! Copiar archivos entre maquinas utilizando ssh
scp -r [[user@]host1:]file1 [...] [[user@]host2:]file2
Comando para copiar archivos entre equipos que tienen SSHD

! Montar directorios remotos a través de ssh
sshfs [user@]host:[dir] mountpoint
Comando para montar en el equipo local un directorio de un equipo que tiene SSHD

Para utilizar el anterior comando se requiere:
1. Instalar el paquete sshfs
2. # modprobe fuse (carga el modulo manualmente)
3. Adicionar "fuse" en /etc/modules (carga el modulo automáticamente cada vez que prende el equipo)
4. Adicionar la cuenta del equipo al grupo fuse
{{{
# adduser (mi usuario) fuse
}}}

! Abrir aplicaciones gráficas de forma remota a través de ssh
Por: Jorge Cortez (Tomado de el-directorio.org)

SSH es una herramienta que nos permite ingresar remotamente a una maquina y ejecutar comandos. Para permite ejecutar comandos que neseciten deplegarse graficamente debemos dar la opcion -X.

Para acceder a una maquina remotamente con la opción de ejecutar aplicaciones gráficas se hace con el siguiente comando:
{{{
 $ ssh -X usuario@maquina_remota
}}}

Para que ssh permita el acceso con la opción -X se debe modificar una linea en el archivo de configuración del sshd de la maquina remota:
{{{
 # nano /etc/ssh/sshd_config
}}}
Se debe modificar la opción ~X11Forwarding la cual por defecto se encuentra en no por yes:
Se guardan los cambios y se reinicia el servicio.

! Escuchar el audio de un computador remoto
{{{
ssh usuario@maquina_remota 'dd bs=1k if=/dev/audio' > /dev/audio
}}}
Información de:
* http://www.foro-cualquiera.com/soporte/123624-truco-escuchar-microfono-una-pc-remota-ubuntu.html

Para mejorar la seguridad, se puede cambiar los permisos de creación de archivos y directorios que por defecto tiene un usuario. Debian y Ubuntu vienen con {{{umask 022}}}, lo que significa que los archivos de usuario se crean con permisos 755: Permisos totales para el dueño del archivo y permisos de lectura y ejecución (sin escritura) para los demás. 

El número que acompaña al comando resulta de restar el número de los permisos que se desea (en este caso permisos 700) del número 777.
* Si desea que los nuevos permisos se ejecuten tanto en consola como en entorno gráfico de un usuario, se debe agregar el comando {{{umask 077}}} al final del archivo {{{.profile}}}. Para que estos permisos sea utilizados por todos los usuarios del sistema, se debe agregar el comando en el archivo {{{/etc/profile}}}
* Si desea que los nuevos permisos solo se apliquen al trabajo en consola, el comando se agrega al final del archivo {{{.bashrc}}}. Si la intención es que se aplique a todos los usuarios, la modificación hay que hacerla en el archivo {{{/etc/bash.bashrc}}}.

El archivo de configuración por defecto de umask para todo el sistema, se encuentra en: {{{/etc/login.defs}}}

Más información sobre los cambios en las variables de entorno en Ubuntu, en: https://help.ubuntu.com/community/EnvironmentVariables
Descarga un recurso:
{{{
$ wget [url]
}}}
Reanudar (-c) una descarga detenida o cancelada:
{{{
$ wget -c [url]
}}}
Descarga un recurso en segundo plano o background (-b):
{{{
$ wget -b [url] 
}}}
Descarga todas las paginas hasta con 5 niveles de profundidad (por defecto):
{{{
$ wget -r -p [url.html]
}}}
* -r busca nuevos enlaces a descargar de forma recursiva
* -p descarga todos los archivos asociados a una página web (imágenes, hojas de estilo, etc.) para su uso offline.
* -l para cambiar el nivel
Para tener un mirror (-m) de un sitio web (sin limite de profundidad) y que solo descargue los cambios (-N):
{{{
$ wget -m -N [url]
}}}
Descarga las páginas y re-escribe los links para acceder a ella fuera de linea:
{{{
$ wget -p -k -E -nd http://norfipc.com/inf/como-subir-fotos-imagenes-servidor-web.php 
}}}
* -k al finalizar la descarga re-escribe los links que existan en la página para que apunten a los archivos descargados si fuera necesario, para asegurar su funcionamiento offline.
* -E Ajustar la extensión. Sustituye la extensión original de la página, que en este caso es .php por la predeterminada .html con el objetivo que pueda ser ejecutada por cualquier usuario.
* Adicionalmente se usa la opción -nd (no directorio) para que todos los archivos estén en el mismo directorio.
Con la opción -nc se reanuda la descarga de un sitio, sin volver a descargar los archivos que ya están localmente.
{{{
$ wget -nc -r http://sitio.com
}}}
Descarga un conjunto de recursos cuyas ~URLs están en un archivo.txt (-i):
{{{
$ wget -i [archivo.txt] 
}}}
Con la opción -o se puede generar un registro o log de la descarga:
{{{
$ wget [url] -o log.txt 
}}}

Más opciones en:
* https://norfipc.com/internet/ejemplos-wget.html
* http://www.gnu.org/software/wget/manual/wget.html