Menu Principal

quarta-feira, 28 de setembro de 2011

Comando para verificar a versão do SQUID no Centos

rpm -qa | grep -i squid

Provérbios 28.7

Pv 28.7 - "O que guarda a lei é filho sábio, mas o companheiro dos comilões envergonha a seu pai."

Lei é sinônimo de palavra, de norma, de verbo, de Jesus. Jesus é a palavra, é a nossa lei, é a nossa vida. Guardar a lei é fazer a vontade de Cristo, é obedecer sua palavra. A palavra é alimento, é VIDA, é fonte de VIDA EM ABUNDÂNCIA. Portanto quem se alimenta de Cristo e cumpre o que aprendeu terá sabedoria e viverá seus benefícios.
O ato de alimentar-se implica em atitude pessoal de ir em busca de um alimento que existe e está disponível. Este alimeto, PARA UM ADULTO, poderá ser semeado e colhido ou caçado ou pescado.
Em qualquer uma das formas há necessidade de empenho e dedicação. Contudo o versículo nos alerta para não sermos comilões ou glutões.
Glutão significa comer em demasia, comer errado e isto faz mal. Comer demais implica comer qualquer coisa a qualquer hora e de qualquer jeito. Como tens te alimentado da palavra de Deus?
Quem tem uma boa alimentação escolhe, prepara e degusta o alimento.
Uma maçã pode ser um excelente alimento, porém deve estar limpa e madura. Uma maçã suja ou podre ou verde faz mal a saúde. Comer em demasia algo bom também poderá fazer mal, pois o organismos poderá se saturar. Até mesmo a água em demasia pode matar.
Na Bíblia vemos Jesus nos alertar a vigiar (observar, atentar),  a meditar (analisar, pensar sobre o assunto) e a orar (buscar orientação do alto). Diz a palavra de Deus que há tempo para tudo, mas quando se refere a oração, vigia e meditação na palavra Ela diz que devemos praticar isso EM TODO O TEMPO.
Entendo nesse versículo o perigo que corremos quando engolimos o que nos é ministrado em cima de um púlpito nas igrejas sem a devida digestão. Digestão essa que se inicia com uma boa mastigação.
Muitos alimentos tem boa aparência, mas ao colocarmos na boca percebemos que aquele alimento está estragado. Durante a mastigação percebemos que há algo de errado e assim temos a oportunidade de evitar engolí-lo e assim preservarmos nossa saúde.
Tome cuidado com o alimento e a quantidade dele que estás ingerindo. Uma boa dieta deve conter vários tipos de nutrientes e na quantidade certa. A palavra de Deus que é o PÃO DA VIDA contém prosperidade,
mas também escassez, contém prazer, mas também sofrimento, contém alegria, mas também tristeza.
Muitos Cristãos tem sido mole diante das dificuldades pois tem se alimentado de um evangelho de facilidades. Quando se deparam com os obstáculos acabam sendo surpreendidos e desistem. Não se engane A PORTA É ESTREITA. Jesus não declarou isso inutilmente.
Bom dia!!!

segunda-feira, 26 de setembro de 2011

Configurando a interface de rede no CENTOS

vi /etc/sysconfig/network-scripts/ifcfg-eth0

Observe a sintaxe abaixo:
DEVICE=eth0
BOOTPROTO=static
DHCPCLASS=
HWADDR=00:30:48:56:A6:NE
IPADDR=192.168.1.101
NETMASK=255.255.255.0
ONBOOT=yes

colocando o ip da interface estaticamente como sendo 192.168.1.101 e dizendo que isto será feito no momento do boot do sistema.
Em seguida entre aqui:
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=libphp1
GATEWAY=192.168.1.1

Aqui definimos a rede como sendo o hostname libphp1 e o gateway 192.168.1.1
Após isto somente faça isto:
/etc/init.d/network restart
Depois podemos até setar um dns para acesso a web:
vim /etc/resolv.conf
Dentro dele eu coloquei assim:
nameserver 200.165.132.148
nameserver 200.165.132.155

quinta-feira, 22 de setembro de 2011

Como habilitar o upload de arquivos no MediaWiki?

Por padrão, a opção de upload de arquivos vem desabilitada no MediaWiki. Siga os passos abaixo para ativá-la:

1 - Crie uma pasta com permissão de escrita pelo servidor web;
2 - Localize, dentro da estrutura onde o MediaWiki foi instalado, o arquivo LocalSettings.php;
3 - Edite o arquivo e localize a linha que contém o parâmetro "$wgEnableUploads";
4 - Altere o parâmetro para "true" conforme exemplo abaixo:

quarta-feira, 21 de setembro de 2011

Fonte:  Minha vida

O Mal de Alzheimer é uma doença silenciosa, que se revela aos poucos. Mas um estudo, publicado por pesquisadores do San Francisco VA Medical Center, nos Estados Unidos, conseguiu mapear os seis principais fatores de risco para a demência: sedentarismo, uso de álcool, depressão, tabagismo, diabetes, hipertensão na meia idade e obesidade.

Em comum, todas essas condições oferecem algum risco à saúde cérebro-vascular. "Fumo, obesidade, hipertensão e diabetes contribuem para o aumento de lesões no cérebro que levam à perda de cognição", afirma o psiquiatra Cássio Bottino, do Instituto de Psiquiatria da Faculdade de Medicina da USP. As lesões, associadas às dificuldades de conexão entre os neurônios (efeito do aumento da proteína beta-amilóide), dão origem à maioria dos diagnósticos de Alzheimer atualmente. "A demência vascular, ou seja, os problemas que surgem devido ao mau funcionamento do coração já são elementos tão importantes quando o crescimento fora de controle da proteína na descoberta da doença", afirma o neurologista e geneticista David Schlesinger, do Hospital Albert Einstein. A seguir, especialistas discorrem sobre a relação entre esses fatores e dão dicas para você cuidar melhor da saúde e se proteger contra o Alzheimer.

Site com pacotes DEBIAN

http://packages.debian.org/stable/

terça-feira, 20 de setembro de 2011

Casamento ou Divórcio?

Dicas sobre exportação do Wiki

Bom, eu estou começando a administrar o MediaWiki agora mas pelo que vi pelos fóruns por aí e lendo bastante sobre MediaWiki, somente usuários Burocratas conseguem promover um user para Administrador.

Mas visto que você é proprietário da Wiki, o que pode fazer é utilizar um comando php chamado createAndPromote.php para criar um novo usuário já como administrador ou mesmo como um Burocrata.

Conecte em sua área FTP via SSH e acesse a pasta onde está a sua wiki. Dentro dela terá uma pasta chamada Maintenance.

Nessa pasta tem vários comando PHP para a Wiki. Daí você entra nela e digita:


Código:
php createandpromote.php nomedousuário senha
E enter. Assim você cria um user como administrador.

Se quiser criar um user já como burocrata e só fazer assim:

Código:
php createandpromote.php --bureaucrat nomedousuário senha
Você acha bastante informação sobre este e outros comandos pelo site da MediaWiki

Fonte:
http://www.mediawiki.org/wiki/Special:Export
http://forum.locaweb.com.br/showthread.php?t=4121

sexta-feira, 16 de setembro de 2011

NAGIOS - notificação via SMS

Fonte: http://meutecnico.com/blog/arquivo/358
Sem dúvida alguma, um ambiente de TI monitorado é muito importante para manter a disponibildade dos serviços de email, sistemas, internet e etc., e em caso de problemas poder rapidamente resolve-los, mas como ser notificado de um problema no sistema em qualquer lugar? uma alternativa é ser avisado direto no celular via SMS, e é sobre isso que trata este tutorial.

Para envio de mensagem via SMS você deve ter um gateway de SMS na sua rede, ou contratar o serviço de um terceiro. Vamos tratar neste tutorial a segunda opção.
Primeiro você deve contratar o serviço de gateway de SMS, eu uso o serviço da Human Mobile ( http://www.human.com.br/sms ) , você pode criar uma conta gratuita para testar o sistema.
Criado a conta, basta seguir os passos abaixo
1. Instalar os modulos do PERL usados pelos script de envio de SMS
perl -MCPAN -e ‘install URI::Escape’
perl -MCPAN -e ‘install LWP::Simple’
obs. Caso seja a primeira vez que esteja instalando um modulo perl, ele vai fazer algumas perguntas, basta dar as respostas padrão.
2. Faça o download do script sendsms.pl na seção de downloads (http://meutecnico.com/blog/downloads) descomprima com o comando unzip e coloque o script em /usr/local/nagios/libexec
3. De permissão de execução do arquivo
chmod +x /usr/local/nagios/libexec sendsms.pl
4. Dentro de /usr/local/nagios/libexec faça um teste de envio de mensagem usando o comando abaixo, alterando para o numero do seu celular, note que sempre o numero segue o código do pais+DDD+numero
./sendsms.pl 551199999999 "Mensagem de teste…"
Eu recebo as mensagens em no máximo 1 minuto, caso demorar muito e acabar não recebendo a mensagem, verifique se sua operadora de telefonia nao esta com problema e também verifique se foi feito corretamente os passos 1 e 3
5. Crie o comando no nagios conforme o exemplo abaixo
define command{
command_name    notify-by-sms
command_line    $USER1$/sendsms.pl $CONTACTPAGER$ "*Monitoramento* notif.: $NOTIFICATIONTYPE$ Svc: $SERVICEDESC$ Equip.: $HOSTNAME$ Descr: $HOSTALIAS IP: $HOSTADDRESS$ Estado: $SERVICESTATE$ Data/Hora: $DATE$ / $TIME$ info: $SERVICEOUTPUT$"
}
define command{
command_name    host-notify-by-sms
command_line    $USER1$/sendsms.pl $CONTACTPAGER$ "*Monitoramento* $NOTIFICATIONTYPE$  equipamento: $HOSTNAME$ – $HOSTALIAS$ IP: $HOSTADDRESS$ Data/Hora: $DATE$ / $TIME$ info: $SERVICEOUTPUT$"
}
6. No arquivo de contatos do nagios, adicione o celular (seguindo o padrão código do pais+DDD+numero) e adicione o comando para o contato receber sms conforme exemplo abaixo
define contact{
contact_name                    Cleiton_Souza
alias                                   admin
contactgroups                   Administradores, Supervisors
host_notification_period        24×7
service_notification_period     24×7
host_notification_options       d,u,r,f,s
service_notification_options    w,c,r,f,s
host_notification_commands host-notify-by-email,  host-notify-by-sms
service_notification_commands   notify-by-email, notify-by-sms
email                           cleitonsouza01@gmail.com
pager                           551199999999
}

quinta-feira, 15 de setembro de 2011

Nagios - monitorar https

Plugin para o monitoramento: check_http

No servidor Nagios configurar um arquivo.cfg

define service{
        use                                  service-abin-web-template
        host_name                       nome_do_servidor

        service_description        Portal  https 
        display_name                  Portal https        
        check_command              nomedoservico!site.com.br!10!15!20
        icon_image                      icon_httpd.gif
        }


No servidor Nagios configurar o serviço e o seu nome no arquivo comandos.cfg

define command{
        command_name    verifica_site_https
        command_line    $USER1$/check_http -H $ARG1$ -w $ARG2$ -c $ARG3$ -t $ARG4$ -S


Configurar o arquivo .cfg do host a ser monitorado onde está o serviço https

command[check_http]=/usr/local/nagios/libexec/check_http -H $ARG1$ -w $ARG2$ -c $ARG3$ -t $ARG4$ -S

Comando para testar (executar o comando no host onde está o https):
 ./check_http -H site.com.br -w 5 -c 5 -t 10

Obs: o teste foi realizado em um servidor CENTOS 5.5

Nagios - Instalação

Fonte: http://wiki.sj.cefetsc.edu.br/wiki/index.php/GER-2010-1

Instalação

  1. Instalar alguns softwares necessários pelo Nagios:
    sudo apt-get install -y gcc libpng12-dev libjpeg62-dev
    wget http://www.sj.ifsc.edu.br/~msobral/GER/nagios/gd-2.0.35.tar.bz2
    tar xjf gd-2.0.35.tar.bz2
    cd gd-2.0.35
    ./configure
    make 
    make install
  2. Fazer o seguinte download:
    wget http://www.sj.ifsc.edu.br/~msobral/GER/nagios/nagios-3.2.1.tar.gz
    wget http://www.sj.ifsc.edu.br/~msobral/GER/nagios/nagios-plugins-master-1.4.14-119-gcf2bc.tar.gz
  3. Descompacte nagios-3.2.1.tar.gz:
    tar xzf nagios-3.2.1.tar.gz
  4. Compile e instale o Nagios:
    cd nagios-3.2.1
    groupadd nagios
    useradd -g nagios -c Nagios -d /var/lib/nagios -m nagios
    ./configure --with-httpd-conf=/etc/apache2/conf.d --with-temp-dir=/var/lib/nagios --with-nagios-user=nagios --with-nagios-group=nagios
    make all
    make install
    make install-init
    make install-commandmode
    make install-config
    make install-webconf
  5. Agora instale o nagios-plugins:
    cd ..
    tar xzf nagios-plugins-master-1.4.14-119-gcf2bc.tar.gz
    cd nagios-plugins-1.4.14-119-gcf2bc
    ./configure --with-nagios-user=nagios --with-nagios-group=nagios
    make
    make install
  6. O Nagios foi instalado dentro de /usr/local/nagios. Dentro de /usr/local/nagios/etc há vários arquivos de configuração, iniciando com nagios.cfg. Esse arquivo contém a configuração global, e a informação de que outros arquivos devem ser incluídos. As configurações específicas ficam em arquivos dentro de /usr/local/nagios/etc/objects. Cada elemento monitorado é definido por um objeto, havendo basicamente hosts (equipamentos) e services (serviços que residem nos equipamentos). Por exemplo, o arquivo localhost.cfg ali existente inicia assim:
    # Define a host for the local machine
     
    define host{
            use                     linux-server            ; Name of host template to use
                                                            ; This host definition will inherit all variables that are defined
                                                            ; in (or inherited by) the linux-server host template definition.
            host_name               localhost
            alias                   localhost
            address                 127.0.0.1
            }
     
    # Define an optional hostgroup for Linux machines
     
    define hostgroup{
            hostgroup_name  linux-servers ; The name of the hostgroup
            alias           Linux Servers ; Long name of the group
            members         localhost     ; Comma separated list of hosts that belong to this group
            }
     
    # Define a service to "ping" the local machine
     
    define service{
            use                             local-service         ; Name of service template to use
            host_name                       localhost
            service_description             PING
            check_command                   check_ping!100.0,20%!500.0,60%
            }
     
     
    # Define a service to check the disk space of the root partition
    # on the local machine.  Warning if < 20% free, critical if
    # < 10% free space on partition.
     
    define service{
            use                             local-service         ; Name of service template to use
            host_name                       localhost
            service_description             Root Partition
            check_command                   check_local_disk!20%!10%!/
            }
  7. Inicie o nagios:
    service nagios start
  8. Crie um usuário para acesso ao Nagios (usuário somente para autenticação básica no Apache):
    htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
  9. Inclua no Apache a configuração da interface web do Nagios. Adicione esta linha a /etc/apache2/sites-enabled/000-default:
    Include conf.d/nagios.conf
  10. Reinicie o Apache:
    service apache2 restart
  11. Acesse a interface web do Nagios pela URL http://192.168.2.X/nagios. Após autenticar o usuário nagioasdmin deve aparecer a seguinte tela:

    Nagios1.png

Exemplos de configurações

A configuração do Nagios fica no diretório /usr/local/nagios/etc. Todos os arquivos mencionados abaixo se referem a esse diretório, salvo se for indicado o contrário. O arquivo de configuração principal se chama nagios.cfg, que contém opções globais e inclusões de outros arquivos com configurações específicas. Em particular, arquivos que tratam de objetos monitorados e informacões relacionadas (hosts, serviços, comandos e templates). ficam dentro do subdiretório objects.

Definições de hosts

Para configurar o Nagios, devem-se primeiro criar definições de hosts (equipamentos monitorados). Esas definições ficam em algum arquivo dentro do subdiretório objects, o qual deve estar incluído em nagios.cfg (veja o exemplo contido em localhost.cfg). Cada host definido é automaticamente monitorado com PING, de forma a verificar se está no ar. Um host é declarado como a seguir:
define host{
        use                     linux-server            ; Nome do template de host a ser usado
                                                        ; Este host irá herdar toas a variáveis que estão definidas
                                                        ; no template linux-server (ou que foram herdadas por ele).
        host_name               gateway                 ; nome do host na rede
        alias                   Gateway do Lab.         ; Descrição do host
        address                 192.168.2.1
 parents   localhost               ; qual o próximo host em direção ao Nagios
        }
O uso de templates simplifica a definição de hosts, pois evita a repetição de muitas opções comuns (veja como seria a definição completa de um host). Os templates estão no arquivo templates.cfg.
A opção parents tem grande importância para possibilitar que o Nagios faça a distinção entre hosts ou serviços falhos ou inalcançáveis. O primeiro caso trata de serviços cujos testes programados falharam, e o segundo caso são aqueles que não podem ser testados, porque dependem de um host intermediário (um gateway) que falhou. Assim pode-se evitar a emissão de alertas para todos os serviços, concentrando-os na causa raiz do problema.

Definições de serviços

Em cada host devem ser criadas definições de serviços a serem monitorados. Cada serviço possui um comando de verificação específico, para que o teste seja mais fidedigno. Duas definições de serviços são mostradas abaixo (para IMAP e DNS):
define service{
        use                             local-service         ; Nome do template de serviço a ser usado
        host_name                       localhost             ; Host onde reside o serviço
        service_description             IMAP
        check_command                   check_imap            ; Comando para verificar o serviço
        notifications_enabled           0                     ; Notificações desabilitadas
        }
 
define service{
        use                             local-service
        host_name                       localhost
        service_description             DNS
        check_command                   check_dns
        notifications_enabled           0
        }
Assim como no caso de hosts, usam-se templates para evitar a repetição de opções de uso comum (ver definição completa de um serviço).

Definições de comandos

Os comandos de verificação de serviço são programas especializados, e que são fornecidos pelo pacote nagios-plugins (que foi instalado junto com o Nagios). A lista de plugins segue abaixo:
Plugin Descrição
check_apt This plugin checks for software updates on systems that use package management systems based on the apt-get(8) command found in Debian GNU/Linux
check_breeze This plugin reports the signal strength of a Breezecom wireless equipment
check_by_ssh Esse pug-in usa SSH para executar comandos no servidor remoto
check_clamd This plugin tests CLAMD connections with the specified host (or unix socket).
check_cluster Plugin servidor/serviço de cluster para nagios 2
check_dhcp Esse plug-in testa a disponibilidade dos servidores DHCP na rede.
check_dig Este plug-in testa o serviço de DNS no computador especificado usando dig
check_disk Este plug-in verifica a quantidade de espaço utilizado no sistema de arquivos montado e gera um alerta caso o espaço livre seja menos que um dos valores limites
check_disk_smb Perl Check SMB Disk plugin for Nagios
check_dns Esse complemento utiliza o programa nslookup para obter o endereço IP do host/domínio consultado. Um servidor DNS opcional pode ser especificado. Se um servidor DNS não é especificado, o(s) servidor(es) padrão(es) no arquivo /ect/resolv.conf serão utilizados.
check_dummy Este plugin irá simplesmente retornar ao estado correspondente para o valor numérico do <estado> do argumento com texto opcional
check_file_age testa o tamanho de um arquivo, ou há quanto tempo ele existe (sua idade).
check_flexlm Check available flexlm license managers
check_ftp This plugin tests FTP connections with the specified host (or unix socket).
check_hpjd Esse plug-in testa o ESTADO de uma impressora HP com um cartão JetDirect. Net-snmp deve estar instalado no computador com o plug-in.
check_http Esse plug-in testa o serviço HTTP no servidor especificado. Pode testar servidores normais (http) e seguros (https), seguir redirecionamentos, pesquisar por strings e expressões regulares, verifica tempo de conexões, e reporta sobre tempo de expiração de certificados.
check_icmp Testa um host com PING.
check_ide_smart This plugin checks a local hard drive with the (Linux specific) SMART interface.
check_ifoperstatus Checks the operational status of a particular network interface on the target host.
check_ifstatus Checks the operational status of a particular network interface on the target host.
check_imap This plugin tests IMAP connections with the specified host (or unix socket).
check_ircd Perl Check IRCD plugin for Nagios
check_load Este plug-in testa a média de carga do sistema atual.
check_log Log file pattern detector plugin for Nagios.
check_mailq Checks the number of messages in the mail queue (supports multiple sendmail queues, qmail).
check_mrtg Este plug-in irá verificar tanto o valor médio ou máximo de um das duas variáveis gravadas em um arquivo de log MRTG.
check_mrtgtraf Este plug-in irá verificar a entrada/saída das taxas de transferência de um roteador, switch, etc registrado em um log do MRTG. Se a entrada do novo registro é mais velha que <expire_minutes>, um estado AVISO é retornado. Se tanto as taxas de entrada ou de saída excederem o limite <icl> ou <ocl> (em Bytes/seg), resulta em um estado CRÍTICO. Se qualquer uma das taxas de ultrapassar o limite <iwl> ou <owl> (em Bytes/seg), resulta em um estado AVISO.
check_nagios This plugin checks the status of the Nagios process on the local machine The plugin will check to make sure the Nagios status log is no older than the number of minutes specified by the expires option. It also checks the process table for a process matching the command argument.
check_nntp This plugin tests NNTP connections with the specified host (or unix socket).
check_nt This plugin collects data from the NSClient service running on a Windows NT/2000/XP/2003 server.
check_ntp This plugin checks the selected ntp server
check_ntp_peer This plugin checks the selected ntp server
check_ntp_time This plugin checks the clock offset with the ntp server
check_nwstat This plugin attempts to contact the MRTGEXT NLM running on a Novell server to gather the requested system information.
check_oracle Check Oracle Database status.
check_overcr This plugin attempts to contact the Over-CR collector daemon running on the remote UNIX server in order to gather the requested system information.
check_ping Use ping to check connection statistics for a remote host.
check_pop This plugin tests POP connections with the specified host (or unix socket).
check_procs Checks all processes and generates WARNING or CRITICAL states if the specified metric is outside the required threshold ranges. The metric defaults to number of processes. Search filters can be applied to limit the processes to check.
check_real This plugin tests the REAL service on the specified host.
check_rpc Check if a rpc service is registered and running using rpcinfo -H host -C rpc_command
check_sensors This plugin checks hardware status using the lm_sensors package.
check_smtp This plugin will attempt to open an SMTP connection with the host.
check_snmp Check status of remote machines and obtain system information via SNMP
check_ssh Try to connect to an SSH server at specified server and port
check_swap Check swap space on local machine.
check_tcp This plugin tests TCP connections with the specified host (or unix socket).
check_time This plugin will check the time on the specified host.
check_udp This plugin tests UDP connections with the specified host (or unix socket).
check_ups This plugin tests the UPS service on the specified host. Network UPS Tools from www.networkupstools.org must be running for this plugin to work.
check_users This plugin checks the number of users currently logged in on the local system and generates an error if the number exceeds the thresholds specified.
check_wave Checks the strength of received signal in a wireless interface.


Cada plugin possui seus argumentos de linha de comando, que são usados para passar parâmetros de execução. A explicação detalhada pode ser obtida executando-se o programa do plugin e passando a opção -h:
msobral@ger:~$ cd /usr/local/nagios/libexec
msobral@ger:/usr/local/nagios/libexec$ ./check_dns -h
 
check_dns v1.4.14 (nagios-plugins 1.4.14)
Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>
Copyright (c) 2000-2008 Nagios Plugin Development Team
 <nagiosplug-devel@lists.sourceforge.net>
 
Esse complemento utiliza o programa nslookup para obter o endereço IP do host/domínio consultado.
Um servidor DNS opcional pode ser especificado.
Se um servidor DNS não é especificado, o(s) servidor(es) padrão(es) no arquivo /ect/resolv.conf serão utilizados.
 
Uso:check_dns -H host [-s server] [-a expected-address] [-A] [-t timeout] [-w warn] [-c crit]
 
Options:
 -h, --help
    Print detailed help screen
 -V, --version
    Print version information
Project-Id-Version: nagios-plugins
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
POT-Creation-Date: 2009-06-17 13:03+0100
PO-Revision-Date: 2009-10-21 20:41+0000
Last-Translator: André Gondim <andregondim@ubuntu.com>
Language-Team: Brazilian Portuguese <pt_BR@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=n > 1;
X-Launchpad-Export-Date: 2009-10-22 21:23+0000
X-Generator: Launchpad (build Unknown)
 -H, --hostname=HOST
    O nome ou endereço que você deseja consultar
 -s, --server=HOST
    Servidor DNS opcional que você que utilizar para fazer consultas
 -a, --expected-address=IP-ADDRESS|HOST
    ENDEREÇO-IP opcional que você espera  o servidor DNS retornar. SERVIDOR deve acabar com
    um ponto (.). Essa opção pode ser repetida várias vezes (Retorna OK se qualquer
    corresponde ao valor). Se vários endereços são retornados de uma vez, você tem que combinar
    a cadeia completa de endereços separados por vírgulas (ordenados alfabeticamente)
 -A, --expect-authority
    Opcionalmente a espera pelo servidor DNS deve ser autorizada para a pesquisa
 -w, --warning=seconds
    Retorna um aviso se o tempo decorrido exceder o valor. Padrão off
 -c, --critical=seconds
    Retorno crítico se o tempo decorrido exceder o valor. Padrão off
 -t, --timeout=INTEGER
    Seconds before connection times out (default: 10)
 
Send email to nagios-users@lists.sourceforge.net if you have questions
regarding use of this software. To submit patches or suggest improvements,
send email to nagiosplug-devel@lists.sourceforge.net
msobral@ger:/usr/local/nagios/libexec$
Nem todos os plugins acima são adicionados automaticamente à configuração do Nagios na instalação. O arquivo commands.cfg contém os comandos preconfigurados. Assim, caso seja necessário adicionar um plugin que ainda não esteja ali (ex: check_dns), deve-se criar uma definição de comando:
define command{
        command_name    check_dns
        command_line    $USER1$/check_dns -H www.google.com.br -s $HOSTADDRESS$
        }
O importante acima é a definição de como o plugin deve ser executado, incluindo os parâmetros que devem ser passados. Alguns parâmetros são predefinidos pelo Nagios, estando disponíveis em macros:
  • $HOSTADDRESS$: o endereço do host onde reside o serviço a ser testado.
  • $ARG1$: o primeiro argumento incluído na definição de serviço.
  • $ARG2$: o segundo argumento incluído na definição de serviço.
  • $ARGn$: o n-ésimo argumento incluído na definição de serviço.
Para exemplificar como passar parâmetros para os plugins, veja o caso de um teste do tipo PING:
define service{
 host_name  linuxbox
 service_description PING
 check_command check_ping!200.0,80%!400.0,40%
 }
O comando check_ping deve ser chamado com dois argumentos (separados por !): 200.0,80% e 200.0,80%. A definição do comando check_ping, por sua vez, os utiliza da seguinte forma:
define command{
 command_name    check_ping
 command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$
 }

Ativando as novas configurações

Sempre que modificar a configuração o Nagios deve ser reiniciado:
sudo service nagios restart
Caso ocorra um erro, e o nagios não inicie, significa que existe um ou mais erros nos arquivos de configuração. Para encontrá-los execute o nagios com a opção -v, que faz uma verificação desses arquivos:
$ cd /usr/local/nagios
$ bin/nagios -v etc/nagios.cfg
Total Warnings: 3
Total Errors:   0
 
Things look okay - No serious problems were detected during the pre-flight check

Atividades

  1. Instale o Nagios na mesma máquina virtual onde está o Cacti.
  2. Crie uma configuração inicial para monitorar os serviços em seu servidor (SMTP, HTTP, IMAP, DNS) e o gateway da rede (192.168.2.1), e o servidor web do IFSC onde fica a Wiki (wiki.sj.ifsc.edu.br).
  3. Crie uma dependência entre o gateway e o servidor Wiki: para chegar à wiki é necessário que o gateway esteja ativo.
  4. Veja o que o Nagios reporta quando o gateway fica fora do ar (o professor irá simular isso).
  5. Estenda a configuração do Nagios para monitorar a conectividade da rede do IFSC. Quer dizer, ele deve monitorar a conectividade com a Internet e quando ela ficar fora do ar deve indicar se o problema está no IFSC ou se é externo.
  6. Configure o envio de alertas para a queda do serviço de email ou web. Esses alertas devem ser enviados por email para o administrador da rede (ou por SMS).
  7. Crie um monitoramento de serviço para monitorar a quantidade de conexões TCP estabelecidas no seu servidor. Dica: esa informação pode ser obtidfa facilmente com SNMP, como visto na aula sobre o Cacti.
    • Crie outro monitoramento de serviço para a quantidade de conexões estabelecidas com o servidor web (port TCP 80).
  8. Integre o Cacti ao Nagios, de forma que se associem os gráficos gerados pelo Cacti aos equipamentos monitorados pelo Nagios.

terça-feira, 13 de setembro de 2011

Comando "sed"

sed "s/stringoriginal/stringtroca/g" arquivooriginal > arquivotroca
|     |             |        |      |              |
|     |             |        |      |              |_arquivo modificado
|     |             |        |      |_ arquivo original permanece inalterado
|     |             |        |_ aplicar em todas ocorrencias do arquivo
|     |             |__ nova palavra ou frase que substituirá stringoriginal
|     |___palavra o frase a ser substituida
|____ s = substituir

Comando para realizar o backup do Mysql

backup: # mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql

restore:# mysql -u root -p[root_password] [database_name] < dumpfilename.sql Backup de todas as bases: # mysqldump -u root -ptmppassword --all-databases > /tmp/all-database.sql

Instalando, logando e efetuando comandos básicos no PostGreSQL.

fONTE: http://blog.livrexpert.com/bancodedados/instalando-configurando-logando-e-efetuando-comandos-basicos-no-postgresql
Data: 4 jul 2011 | Autor: Marcos da B.M. Oliveira | 135 views

Vamos começar do início:

Instalando o PostGreSQL
view source
print?
1.apt-get install postgresql-8.3
2.apt-get install postgresql-server-dev-8.3
3.apt-get install phppgadmin

Logando pela primeira vez no PostGreSQL,
para poder logar com senha sem que haja erro:
view source
print?
1.gedit /etc/postgresql/8.3/main/pg_hba.conf

trocar isso:
view source
print?
1.# Database administrative login by UNIX sockets
2.local all postgres ident sameuser

por isso:
view source
print?
1.# Database administrative login by UNIX sockets
2.local all postgres password

Reiniciar o postgreSQL
view source
print?
1./etc/init.d/postgresql-8.3 restart

Para logar com o usuário postgres:
view source
print?
1.# su postgres

Para criar um novo usuário:
view source
print?
1.$ CREATEUSER -P nome-do-usuário

Obs.:Voçê também pode fazer alterações pelo phpPGadmin
http://localhost/phppgadmin , caso encontre alguma dificuladade, mas primeiro deve criar o usuario e pôr a senha para logar.

Agora, “opcionalmente” mais medidas de segurança “podem/devem” ser tomadas:

Edite o arquivo “/etc/postgresql/8.3/main/pg_hba.conf”, responsável por configurar como e quem se conecta e autentica ao banco de dados;

Onde há:

local all postgres ident sameuser

Substitua por:

local all postgres md5 sameuser

Logando no PostGre:
view source
print?
01.psql -U postgres -W
02.Senha para usuário postgres:
03.Bem vindo ao psql 8.3.14, o terminal iterativo do PostgreSQL.
04.
05.Digite: \copyright para mostrar termos de distribuição
06.\h para ajuda com comandos SQL
07.\? para ajuda com comandos do psql
08.\g ou terminar com ponto-e-vírgula para executar a consulta
09.\q para sair
10.
11.postgres=#

Criando novos usuarios:
view source
print?
1.CREATE USER marcos\g
2.CREATE ROLE
3.postgres=#

Obs.: Antes vc deve logar com o usuario padrão “postgres” e criar um banco de dados com o nome do usuario que deseja criar.

Comando para criar um Banco de Dados:
view source
print?
1.CREATE DATABASE usuario \g
2.CREATE DATABASE
3.postgres=#

Criando tabela:
view source
print?
1.marcos=> CREATE TABLE tabela (login varchar(20) null, senha varchar(20) null)\g
2.CREATE TABLE
3.marcos=>

Inserindo dados na tabela criada:
view source
print?
1.marcos=> INSERT INTO tabela VALUES ('marcos', 'senha123')\g
2.INSERT 0 1
3.marcos=>

Inserindo ou alterando a senha de um usuário do PostGre:
view source
print?
1.postgres=# ALTER USER marcos WITH PASSWORD 'nova_senha'\g
2.ALTER ROLE
3.postgres=#

Executando o comando de criar novos usuarios:
view source
print?
1.postgres=# CREATE USER livrexpert\g
2.CREATE ROLE
3.postgres=#

Obs.:Durante instalação pra quem tem o Debian NetInstall instalado, provavelmente seu sistema irá solicitar o CD para completar a instalação:

Troca de mídia: por favor, insira o disco nomeado
'Debian GNU/Linux 5.0.3 _Lenny_ - Official i386 CD Binary-1 20090905-08:23'
na unidade '/cdrom/' e pressione enter

sexta-feira, 9 de setembro de 2011

Instalação LAMP (Apache, PHP and MySQL in Linux) Server for CentOS/RHEL

Instalação do PHP 5.3

Instalando o PostgreSQL no CENTOS

Instalando os pacotes necessários:

Obs.: Para esta instalação estou admitindo que o Apache esteja corretamente instalado e funcionando. Além do Apache, também é necessário que o PHP esteja instalado. Isso porque eles serão necessários para utilização do phpPgAdmin.

# yum install -y postgresql postgresql-server postgresql-devel

O primeiro pacote é o base para o PostgreSQL. Em seguida, temos o pacote para o servidor e o de desenvolvimento. Como dependência, também será instalado o postgresql-libs.

Verificando os pacotes:

# rpm -qa | grep postgresql
postgresql-8.1.9-1.el5
postgresql-server-8.1.9-1.el5
postgresql-libs-8.1.9-1.el5
postgresql-devel-8.1.9-1.el5

Se você tiver obtiver na saída os pacotes citados acima, podemos continuar.

Iniciando o serviço:
Antes de iniciar rode o comando: service postgresql initdb (apenas na primeira vez para a criação dos arquivos padrão.)
# service postgresql start
Iniciando serviço postgresql : [ OK ]

A partir desse momento o servidor PostgreSQL já está rodando. Para confirmar:

# nmap -sTU localhost

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2007-08-08 16:51 BRT
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 3156 closed ports
PORT STATE SERVICE
80/tcp open http
5432/tcp open postgres

O arquivo para configurar o Postgre é o /var/lib/pgsql/data/pg_hba.conf
Ex de configuração
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all rede_local/mask trust


A autenticação do cliente é controlada pelo arquivo que por tradição se chama pg_hba.conf e é armazenado no diretório de dados do agrupamento de bancos de dados. HBA significa autenticação baseada no hospedeiro (host-based authentication). É instalado um arquivo pg_hba.conf padrão quando o diretório de dados é inicializado pelo utilitário initdb. Entretanto, é possível colocar o arquivo de configuração da autenticação em outro local; consulte o parâmetro de configuração hba_file.

O formato geral do arquivo pg_hba.conf é um conjunto de registros, sendo um por linha. As linhas em branco são ignoradas, da mesma forma que qualquer texto após o caractere de comentário #. Um registro é formado por vários campos separados por espaços ou tabulações. Os campos podem conter espaços em branco se o valor do campo estiver entre aspas. Os registros não podem ocupar mais de uma linha.

Cada registro especifica um tipo de conexão, uma faixa de endereços de IP de cliente (se for relevante para o tipo de conexão), um nome de banco de dados, um nome de usuário e o método de autenticação a ser utilizado nas conexões que correspondem a estes parâmetros. O primeiro registro com o tipo de conexão, endereço do cliente, banco de dados solicitado e nome de usuário que corresponder é utilizado para realizar a autenticação. Não existe fall-through (procura exaustiva) ou backup: se um registro for escolhido e a autenticação não for bem-sucedida, os próximos registros não serão levados em consideração. Se não houver correspondência com nenhum registro, então o acesso é negado.

O registro pode ter um dos sete formatos a seguir:

local banco_de_dados usuário método_de_autenticação [opção_de_autenticação]
host banco_de_dados usuário endereço_de_CIDR método_de_autenticação [opção_de_autenticação]
hostssl banco_de_dados usuário endereço_de_CIDR método_de_autenticação [opção_de_autenticação]
hostnossl banco_de_dados usuário endereço_de_CIDR método_de_autenticação [opção_de_autenticação]
host banco_de_dados usuário endereço_de_IP máscara_de_IP método_de_autenticação [opção_de_autenticação]
hostssl banco_de_dados usuário endereço_de_IP máscara_de_IP método_de_autenticação [opção_de_autenticação]
hostnossl banco_de_dados usuário endereço_de_IP máscara_de_IP método_de_autenticação [opção_de_autenticação]

O significado de cada campo está descrito abaixo:

local

Este registro corresponde às tentativas de conexão feitas utilizando soquete do domínio Unix. Sem um registro deste tipo não são permitidas conexões através de soquete do domínio Unix.
host

Este registro corresponde às tentativas de conexão feitas utilizando o protocolo TCP/IP. Os registros host correspondem tanto às conexões SSL (Secure Socket Layer), quanto às não SSL.

Nota: Não serão possíveis conexões TCP/IP remotas, a menos que o servidor seja inicializado com o valor apropriado para o parâmetro de configuração listen_addresses, uma vez que o comportamento padrão é aceitar conexões TCP/IP apenas no endereço retornante (loopback) localhost.

hostssl

Este registro corresponde às tentativas de conexão feitas utilizando o protocolo TCP/IP, mas somente quando a conexão é feita com a criptografia SSL.

Para esta opção poder ser utilizada o servidor deve ter sido construído com o suporte a SSL ativado. Além disso, o SSL deve ser ativado na inicialização do servidor através do parâmetro de configuração ssl (Para obter informações adicionais deve ser consultada a Seção 16.7).
hostnossl

Este registro é o oposto lógico de hostssl: só corresponde a tentativas de conexão feitas através do protocolo TCP/IP que não utilizam SSL.
banco_de_dados

Especifica quais bancos de dados este registro corresponde. O valor all especifica que corresponde a todos os bancos de dados. O valor sameuser especifica que o registro corresponde ao banco de dados com o mesmo nome do usuário fazendo o pedido de conexão. O valor samegroup especifica que o usuário deve ser membro do grupo com o mesmo nome do banco de dados do pedido de conexão. Senão, é o nome de um banco de dados específico do PostgreSQL. Podem ser fornecidos vários nomes de banco de dados separados por vírgula. Pode ser especificado um arquivo contendo nomes de banco de dados, precedendo o nome do arquivo por @.
usuário

Especifica quais usuários do PostgreSQL este registro corresponde. O valor all especifica que corresponde a todos os usuários. Senão, é o nome de um usuário específico do PostgreSQL. Podem ser fornecidos vários nomes de usuário separados por vírgula. Podem ser especificados nomes de grupo precedendo o nome do grupo por +. Pode ser especificado um arquivo contendo nomes de usuário precedendo o nome do arquivo por @.
endereço_de_CIDR

Especifica a faixa de endereços de IP da máquina cliente que este registro corresponde. Contém um endereço de IP na notação padrão decimal com pontos, e o comprimento da máscara de CIDR (Os endereços de IP somente podem ser especificados numericamente, e não como domínios ou nomes de hospedeiro). O comprimento da máscara indica o número de bits de mais alta ordem que o endereço de IP do cliente deve corresponder. Os bits à direita devem ser zero em um determinado endereço de IP. Não pode haver espaços em branco entre os endereços de IP, a / e o comprimento da máscara de CIDR. [1]

Um endereço_de_CIDR típico seria 172.20.143.89/32 para um único hospedeiro, ou 172.20.143.0/24 para uma rede. Para especificar um único hospedeiro deve ser utilizada uma máscara de CIDR igual a 32 para o IPv4, ou igual a 128 para o IPv6.

Um endereço especificado no formato IPv4 corresponde às conexões IPv6 que possuem o endereço correspondente como, por exemplo, 127.0.0.1 corresponde ao endereço de IPv6 ::ffff:127.0.0.1. Uma entrada especificada no formato IPv6 corresponde apenas às conexões IPv6, mesmo que represente um endereço na faixa IPv4-em-IPv6. Deve ser observado que as entradas no formato IPv6 serão rejeitadas se a biblioteca C do sistema não possuir suporte a endereços IPv6.

Este campo se aplica apenas aos registros host, hostssl e hostnossl.
endereço_de_IP
máscara_de_IP

Estes campos podem ser utilizados como uma alternativa à notação endereço_de_CIDR. Em vez de especificar o comprimento da máscara, a máscara é especificada como uma coluna em separado. Por exemplo, 255.0.0.0 representa uma máscara de CIDR para endereços de IPv4 com comprimento igual a 8, e 255.255.255.255 representa uma máscara de CIDR com comprimento igual a 32.

Estes campos se aplicam apenas aos registros host, hostssl e hostnossl.
método_de_autenticação

Especifica o método de autenticação a ser utilizado para se conectar através deste registro. Abaixo está mostrado um resumo das escolhas possíveis; os detalhes podem ser encontrados na Seção 19.2.

trust

A conexão é permitida incondicionalmente. Este método permite a qualquer um que possa se conectar ao servidor de banco de dados PostgreSQL se autenticar como o usuário do PostgreSQL que for desejado, sem necessidade de senha. Consulte a Seção 19.2.1 para obter detalhes.
reject

A conexão é rejeitada incondicionalmente. É útil para "eliminar por filtragem" certos hospedeiros de um grupo.
md5

Requer que o cliente forneça uma senha criptografada pelo método md5 para autenticação. Consulte a Seção 19.2.2 para obter detalhes.
crypt

Requer que o cliente forneça uma senha criptografada através de crypt() para autenticação. Deve-se dar preferência ao método md5 para os clientes com versão 7.2 ou posterior, mas os clientes com versão anterior a 7.2 somente suportam crypt. Consulte a Seção 19.2.2 para obter detalhes.
password

Requer que o cliente forneça uma senha não criptografada para autenticação. Uma vez que a senha é enviada em texto puro pela rede, não deve ser utilizado em redes não confiáveis. Consulte a Seção 19.2.2 para obter detalhes.
krb4

É utilizado Kerberos V4 para autenticar o usuário. Somente disponível para conexões TCP/IP. Consulte a Seção 19.2.3 para obter detalhes.
krb5

É utilizado Kerberos V5 para autenticar o usuário. Somente disponível para conexões TCP/IP. Consulte a Seção 19.2.3 para obter detalhes.
ident

Obtém o nome de usuário do sistema operacional do cliente (para conexões TCP/IP fazendo contato com o servidor de identificação no cliente, para conexões locais obtendo a partir do sistema operacional) e verifica se o usuário possui permissão para se conectar como o usuário de banco de dados solicitado consultando o mapa especificado após a palavra chave ident. Consulte a Seção 19.2.4 para obter detalhes.
pam

Autenticação utilizando o serviço Pluggable Authentication Modules (PAM) fornecido pelo sistema operacional. Para obter detalhes deve ser consultada a Seção 19.2.5.

Fonte: http://pgdocptbr.sourceforge.net/pg80/client-authentication.html


Após a configuração o serviço deve ser reinicializado.

# service postgresql restart

quinta-feira, 8 de setembro de 2011

Limpando a lixeira do Samba

Quando utilizamos o Samba como PDC, temos a opção de utilizar uma lib chamada ".recycle", que realiza a tarefa de manter em um diretório (.recycle) todos os arquivos apagados pelos usuários, o que muitas vezes é bem mais rápido do que voltar backup e bibibi bóbóbó.

Um detalhe importante desta lib .recycle do Samba é que quando um determinado arquivo é excluído de sua pasta original e enviado para a lixeira, é mantida a data original do arquivo e não a data de exclusão do mesmo, o que trás dificuldades se queremos limpar a nossa lixeira deixando apenas os arquivos excluídos nos últimos 30 dias.

Para saber o dia em que o arquivo foi enviado para a lixeira, vamos utilizar o seguinte comando:

$ stat /fileserver/.recycle/teste.txt
File: "/fileserver/.recycle/teste.txt"
Size: 32256            Blocks: 64         IO Block: 4096   Regular File
Device: 806h/2054d     Inode: 6373477     Links: 1
Access: (0766/-rwxrw-rw-)  Uid: (  850/linux)   Gid: (  850/linux)
Access: Tue May 31 19:34:00 2005
Modify: Tue May 31 19:33:46 2005
Change: Tue May 31 19:44:06 2005

O que nos interessa aqui é a linha do "Change", que contém a data, hora e ano em que o arquivo foi enviado para a lixeira. Para isto utilizamos:

$ stat -c "%n %z" /fileserver/.recycle/teste.txt
teste.txt Tue May 31 19:44:06 2005

Onde:
  • -c - para definir formato
  • %n - exibe nome do arquivo
  • %z - exibe data da última modificação

Para facilitar fiz o seguinte script:
#!/bin/sh
#
# recycle.sh - Utilizado para remover arquivos da lixeira do samba
#
# Autor: Saulo Fabrin <caroco@gmail.com>
#
# Este programa deve ser colocado no cron e executado todos os dias
# para remover arquivo antigos da lixeira do samba com base nos
# parâmetros "DIR" e "DAT"
#
# Onde:
#
# DIR - diretório principal onde esta localizado o .recycle
# DAT - remove os arquivos há 30 dias, a partir da data atual
#


DIR="/fileserver/"
DAT="30"

#utilizado para gerar as datas
DAT1=`date --date "$DAT day ago" | awk '{print $1" "$2" "$3}'`
DAT2=`echo $DAT1 | awk '{print $1}'`


#localiza e exclui os arquivos de acordo com os parâmetros passados
find "$DIR" -type f -exec stat -c "%n %z" {} \; | grep ".recycle" | egrep -w "$DAT1" | awk -F "$DAT2" '{print $1}'| sed 's/^/"/g ; s/ $/"/g' | xargs -replace rm

by Saulo Fabrin

Fonte: Viva o Linux



Apenas para listar
Quando o arquivo é deletado do servidor, a data de criação e da última alteração não são modificados, contudo o campo inode é alterado. O parâmtero -mtime não verifica a alteração no inode, já o ctime verifica. Por esse motivo foi usado o ctime. O comando ls -l não exibe a data de deleção do arquivo, por isso foi utilizado o comando "stat -c".
Exemplo:
#find path-da-lixeira -type f -ctime -1 -exec stat -c "%n %z" {} \;
O comando acima lista todos os arquivos deletados nas últimas 24 horas e exibe nesta lista a data da deleção e o nome do arquivo.
O comando "stat -c" permite visualizar a data em que o arquivo foi deletado e o parâmetro -ctime verifica a alteração no inode do arquivo.
Outra alternativa é alterar o /etc/samba/smb.conf
O parâmetro recycle:touch = True da configuração da lixeira permite que quando o arquivo for deletado o samba altera a data de criação do arquivo para a data da respectiva deleção.

Ex.
path = /teste/lixeira
public = yes
writeable = yes
read only = no
create mask = 0777
guest ok = yes
recycle:exclude = *.tmp *.temp *.o *.obj ~$*
recycle:keeptree = True
recycle:touch = True
recycle:versions = True
recycle:noversions = .doc|.xls|.ppt
recycle:repository = .recycle
recycle:maxsize = 0
vfs objects = recycle


segunda-feira, 5 de setembro de 2011

Comando grep (Procurar texto dentro do arquivo)

PROCURAR PALAVRAS DENTRO DOS ARQUIVOS

$ grep "frase que procuro" -r /home/zago/guiaz/

Este comando faz uma procura em todos os arquivos no caminho indicado
e lista o caminho e nome do arquivo que contém a frase procurada.

Comando no vi

Fonte: http://www.infowester.com/linuxvi.php

Introdução
"vi" é a sigla para "Visual Interface". A origem desse nome se deve ao seguinte fato: quando o vi foi criado (começo da década de 80), não era comum existirem editores de textos como nos dias de hoje. Naquela época, você digitava um texto mas não podia vê-lo! Isso mesmo! Em 1992, foi criado o vim (Vi IMitator), um clone fiel ao vi, porém com muitas outras funcionaliades, que só foram sendo adicionadas. Algum tempo depois, o vim passou a ser chamado de `Vi IMproved' (vi melhorado).
O vim é um dos editores de textos mais utilizados no mundo Unix. Em alguns sistemas, existe um link simbólico (/bin/vi) apontando para o /usr/vim. Em outros, o /bin/vi é o executável, só que executa diretamente o vim. Muita gente acha que usa vi, mas na verdade utiliza o vim, e eles têm algumas diferenças. O que você verá abaixo fala sobre o vim.
O vim é um editor de textos muito poderoso, ele pode: abrir vários arquivos ao mesmo tempo, possui sistema de autocorreção, auto-identação, seleção visual, macros, seleção vertical de texto, uso de expressões regulares, sintaxe colorida, e muito mais. Ele não é exclusivo do Unix, ou seja, pode ser executado em outras plataformas, como Amiga, MacOS, Sun, Windows entre outras.
Existe também o gvim, que é o vim em modo gráfico, com todas as funcionalidades do vim em pleno funcionamento, o que muda é apenas o modo gráfico mesmo.
O vim possui vários modos, ou seja, estados em que ele se encontra. São eles: modo de inserção, comandos, linha de comando, visual, busca e reposição. Abordarei os dois principais:
Modo de inserção e de comandos
Para identificar o modo (estado) do vim, basta visualizar o rodapé da tela.
Agora, vamos à prática. Para executar o vim, utilize:
$ vi => Abre o vim vazio, sem nenhum arquivo e exibe a tela de apresentação.
$ vi arquivo => Abre o arquivo de nome "arquivo".
$ vi arquivo + => Abre o arquivo de nome "arquivo", com o cursor no final do mesmo.
$ vi arquivo +10 => Abre o arquivo de nome "arquivo", com o cursor na linha 10.
$ vi arquivo +/Copag => Abre o arquivo de nome "arquivo", na primeira ocorrência da palavra "Copag".
Ao executar o vim, ele inicia diretamente em modo de comando. Para comprovar, é só olhar na última linha (rodapé) e não vai haver nada lá. Isso quer dizer que você não conseguirá escrever nada, pode digitar a vontade que só vai ouvir beeps. Para começar a escrever, pressione "i" em seu teclado. O vim entra em modo de inserção, que você comprova (como falado anteriormente) pelo rodapé da tela, onde fica a seguinte marcação:
- - -- INSERT --
Suponha que você já digitou o bastante, e quer salvar, por segurança. Pressione a tecla ESC para voltar em modo de comandos. E veja os comandos para salvar/sair:
:w => Salva o arquivo que está sendo editado no momento.
:q => Sai.
:wq => Salva e sai.
:x => Idem.
ZZ => Idem.
:w! => Salva forçado.
:q! => Sai forçado.
:wq! => Salva e sai forçado.
Então, você editou uma boa quantidade de textos e quer salvar:
:w
Agora, quer voltar a editar o texto:
i
Lembre que utilizando o "i" para inserção, a mesma se inicia inserindo texto antes do cursor. Veja agora outros subcomandos de inserção de texto:
A => Insere o texto no fim da linha onde se encontra o cursor
o => Adiciona uma linha vazia abaixo da linha corrente
O => Adiciona uma linha vazia acima da linha corrente
Ctrl + h => Apaga último caracter à esquerda
Voltando ao modo de comando:
Veja agora subcomandos para movimentação pelo texto:
Ctrl + f => Passa para a tela seguinte.
Ctrl + b => Passa para a tela anterior.
H => Move o cursor para a primeira linha da tela.
M => Move o cursor para o meio da tela.
L => Move o cursor para a última linha da tela.
h => Move o cursor para caracter a esquerda.
j => Move o cursor para linha abaixo.
k => Move o cursor para linha acima.
l => Move o cursor para caracter a direita.
w => Move o cursor para o início da próxima palavra (não ignorando a pontuação).
W => Move o cursor para o início da próxima palavra (ignorando a pontuação).
b => Move o cursor para o início da palavra anterior (não ignorando a pontuação).
B => Move o cursor para o início da palavra anterior (ignorando a pontuação).
0 (zero) => Move o cursor para o início da linha corrente.
^ => Move o cursor para o primeiro caracter não branco da linha.
$ => Move o cursor para o fim da linha corrente.
nG => Move o cursor para a linha de número "n"
(susbstitua n pelo número da linha)..
G => Move o cursor para a última linha do arquivo.
Copiando e colando textos no vim (utilizando o mouse)
Selecione o texto necessário com o botão esquerdo do mouse. Quando você for colar, saiba que o texto será colado a partir de onde se encontra o cursor (esse que aparece, às vezes piscando e às vezes não, quando você está digitando). Para colar, depois de ter selecionado o texto, você pode utilizar uma dessas opções:

1) Pressionando o botão direito do mouse;
2) Pressionando o botão direito + botão esquerdo juntos;
3) Pressionando o botão do meio do mouse (mouse de 3 botões);
Observação: Lembre-se que o vim deve estar no modo de inserção.
Usando o modo visual do vim
Entre no modo visual: v
Agora, utilize as teclas direcionais (setas) do teclado, para selecionar o texto desejado.
Pressione e cole, utilizando a tecla "p" (paste).
Veja agora como apagar um determinado texto:
Utilizando normalmente as teclas Backspace/Delete, ou entrando em modo visual (v) e pressionando a tecla Delete.
Você pode remover até o final de uma palavra, utilizando: dw
Pode também remover até o final de uma frase: d$
Desfazendo uma ação
É claro que você pode desfazer uma ação que você considera errado, ou que errou ao digitar o texto. É só utilizar: u
Se você precisar voltar o texto na tela, utilize as teclas Ctrl + r.
Subcomandos para localização de texto
/palavra => Procura pela palavra ou caracter acima ou abaixo do texto.
?palavra => Move para a ocorrência anterior da palavra (para repetir a busca use "n").
n => Repete o último comando utilizando / ou ?.
N => Repete o último comando / ou ? ao contrário (baixo para cima).
Ctrl+g => Mostra o nome do arquivo, o número da linha corrente e o total de linhas.
Mais opções para remoção de caracteres
x => Apaga o caracter onde o cursor estiver.
dd => Apaga a linha inteira onde o cursor estive
D => Apaga a linha a partir da posição do cursor até o fim.
J => Une a linha corrente à próxima.
:5dd => Removeas próximas 7 linhas a partir da posição do atual do cursor (qualquer número).
Mais para copiar e colar
:yy => Copia a linha onde o cursor se encontra.
:5yy => Copia as próximas 5 linhas a partir da posição atual do cursor.
:p => Cola o que foi copiado na linha abaixo do cursor atual.
Opções para substituição de textos
rCARACTER => Substitui o caracter onde o cursor se encontra pelo caracter especificado em CARACTER.
RTEXTO => Substitui o texto corrente pelo texto digitado (sobrepõe).
cw => Remove a palavra corrente para substituição.
cc => Remove a linha corrente para substituição.
C => Substitui o restante da linha corrente, esperando o texto logo após o comando.
J => Une a linha corrente à próxima.
:s/velho/novo => Substitui a primeira ocorrência de "velho" por "novo" na linha corrente.
:% s/velho/novo => Substitui em todo o arquivo (%) a primeira ocorrência de "velho" por "novo" em cada linha.
:% s/velho/novo/g => Substitui em todo o arquivo (%), todas (g) as ocorrências de "velho" por "novo".
:% s/velho/novo/gc => Igual ao anterior, mas pedindo confirmação para cada substituição.
:% s/^String[0-9]//gc => Expressões regulares também funcionam, como no sed.
:% s/./\u&/gc => Converte para maiúsculas (\u) o primeiro caracter (.) de cada linha.
Abreviações
:ab => Mostra todas as abbr.
:abc[lear] => Remove todos.
:iab => Apenas para modo de inserção.
:iabc[lear] => Tira todos de inserção.
:cab => Apenas p/modo de comando ( : ).
:cabc[lear] => Tira todos os modos de comando.
:una vc => Tira ab para vc.
Observação: Pontuação, espaço ou o ENTER, disparam a expansão de uma abreviação. Porém, Ctrl+] também pode ser usado, para expandir sem adicionar caracteres.
Opções para o comando SET

:set
autowrite aw => Salva a cada alteração.
backspace bs => Comportamento backspace (1 ou 2).
errorbell eb => Campainha de erro.
expandtab et => Troca tab por espacos.
fileformat=dos ff => Converte o arquivo para DOS.
hidden hid => Preserva o buffer.
hlsearch hls => Elumina a última procura.
ignorecase ic => Case insensitive na busca.
incsearch is => Ilumina procura enquanto digita.
laststatus=2 => Mostra linha de estado.
lazyredraw lz => Não redesenha em macros.
lines=N => Múmero de linhas na tela.
magic => Usar mágicas na procura de padrões.
number nu => Mostra núm da linha.
report=N => Mostra aviso quando N linhas mudaram (0=sempre).
showcmd => Mostra o comando que se está fazendo.
showmatch sm => Mostra o casamento de {},[],().
smartcase scs => Assume "noic" quando tiver maiúsculas.
textwidth=N => Quebra de linha do texto.
undolevels ul=N => Guarde os N últimos comandos para desfazer (padrão=1000).
vb t_vb= => Retira o "beep" de erro.
Agora invertendo maiúsculas/minúsculas
5~ => Inverte os 5 próximos caracteres.
g~$ => Inverte todos os caracteres até o fim da linha.
seleciona, u => Converte para minúsculas.
seleciona, U => Converte para maiúsculas.
seleciona, ~ => Inverte.
Observação: Onde está escrito "seleciona", é para fazer utilizando o modo visual (v).
Agora veja como definir coluna de quebra de linha (problema que eu tive quando iniciei no aprendizado do vim):
:set textwidth=N
Se você já estiver num arquivo pronto:
:set wm=5 => O número 5 aqui são as colunas que serão "cortadas".
gqG => Até o final do arquivo.
Vamos ver agora o que podemos fazer pressionando a tecla "Ctrl":

É claro que é segurando Ctrl + .
No modo de COMANDO:
A => Incrementa um número (Add)
X => Decrementa um número
S => ScrollLock
L => Redesenha tela
V => Modo visual (Visual Vertical)
G => Status do arquivo
M => Início da próxima linha
E => Linha abaixo sem mover cursor
Y => Linha acima sem mover cursor
N => Próxima linha (Next)
P => Linha anterior (Previous)
F => PageDown (Forward)
B => PageUp (Backyard)
U => PageUp / 2 (Up)
D => PageDown / 2 (Down)
Agora, no modo de INSERÇÃO:
A => Insere o último texto inserido
I => TAB
S => ScrollLock
H => BackSpace
T => 2 tab's no início da linha (Two Tabs)
V => Anula expansão do próximo caractere
J => Enter - quebra de linha
M => Enter - quebra de linha
L => Redesenha tela
R => Insere conteúdo do registrador [a-z] (Veja abaixo)
K => Insere um dígrafo (Veja abaixo)
N => Procura palavra no texto atual (Next)
P => Procura palavra no texto atual (Previous)
Y => Copia caractere que está acima (Yank)
Veja os caracteres especiais:
ga => Mostra o código da letra sobre o cursor.
:dig => Mostra todos os dígrafos disponíveis (tabela).
Exemplos: Para fazer um º, use Ctrl+K,-,o ("Ctrl"+"K"+"-"+"o").
Para fazer um ½, use Ctrl+K,1,2 ("Ctrl"+"K"+"1"+"2").
Trabalhando com arquivos e janelas múltiplas
Você pode abrir múltiplos arquivos, por exemplo:
$ vim arquivo1 arquivo2
E pode alternar entre as janelas. Veja:
:wn => Grava o atual e vai ao próximo.
:wN => Grava o atual e vai ao anterior.
:args => Mostra todos os arquivos atuais.
:qa => Sai de todas as janelas de uma vez.
:all => Abre todos os arquivos em janelas individuais.
Tecla chave das janelas = Crtl+W
j, seta abaixo => Move para janela abaixo.
k, seta acima => Move para janela acima.
o => Apenas esta janela, fecha todas as outras (Only).
+, - => Muda o tamanho da janela.
= => Deixa todas as janelas com tamanhos iguais.

Os registradores
"[a-z] => Use o registrador [a-z] para o próximo delete, cópia ou cola.
:reg => Mostra o conteúdo de todos os registradores.
:reg [a-z] => Mostra o conteúdo do registradores [a-z].
Observação: O [a-z] pode ser: 0-9a-z%#:.-="
Marcas:
m[a-z] => Marca em [a-z] a posição corrente do cursor.
`[a-z] => Vai até a marca [a-z].
`` => Vai até a posição anterior ao último pulo (alterna).
:marks => Mostra as marcas ativas.

Fazendo gravação de seqüência de comandos
q[a-z] => Inicia a gravação de uma seqüência no registrador [a-z].
q[A-Z] => Inicia a gravação, adicionando no registrador [a-z].
q => Pára a gravação.
@[a-z] => Executa a seqüência do registrador [a-z] (5 vezes? 5@a)
Dica: Pode-se colocar o @[a-z] dentro da própria gravação do q[a-z]! Assim ele é executado recursivamente. Muito útil quando há uma procura de padrões na gravação. faz para todas as ocorrências.
Mapeamentos
:map :r!date => Mapeamento em modo de comando.
:imap :r!date => Mapeamento em modo de inserção.
:cmap r!date => Mapeamento em modo linha de comando.
:vmap :r!date => Mapeamento em modo visual.
Exemplos:
"html: negrito no trecho selecionado
:vmap d`pa # html: negrito no trecho selecionado
"liga/desliga autoIndent
:map ,si :set ai!:echo "autoIndent="&ai
"mostrar os espaços em branco no fim das linhas
:map / *$^M
Através dos mapeamentos é possível "encurtar" comandos, ou seja, abreviá-los. Conheça as sintaxes:
Comment => Ciano
Constant => Roxo
Identifier => Ciano
PreProc => Azul escuro
Special => Vermelho
Statement => Amarelo
String => Roxo
Type => Verde
Todo => Preto, fundo marrom
Error => Branco, fundo vermelho
Ignore => Preto, fundo preto! - esconde
Utilizando o recurso de expandtab
Mas, o que isso faz? Transforma todos os TABs em espaços. Podemos ativar dentro do próprio vim, utilizando o comando:
:set expandtab
Para desabilitar:
:set noexpandtab
Podemos colocar também no arquivo ~/.vimrc a seguinte linha:
set expandtab
O arquivo ~/.vimrc pode ser usado para muitas configurações, e essa é uma delas. Existe ainda o arquivo ~/.exrc, mas não entraremos em detalhes.
Podemos incluir a saída de um comando no vim, utilizando:
:r!comando
Por exemplo:
:r!rpm -q kernel
Incluiria o seguinte resultado, dentro do seu texto (isso na minha máquina):
kernel-2.4.18-3
Dicas diversas do vim:
:xit => Igual :wq, mas só grava se tiver sido alterado algo no arquivo.
:map N_ARQ ^R=expand("%:t:r")^M
Imprime no arquivo o próprio nome do arquivo editado quando N_ARQ é digitado.
Agora, veja como alinhar o texto:
:left
:right
:center
E para fazer uma busca de 2 palavras ao mesmo tempo:
/palavra1\|palavra2

O vim é um editor de textos com centenas de opções, comandos, strings... Enão dá para abordar tudo aqui. Por isso, a melhor maneira de conhecê-lo a fundo é usando-o.
Agora, veja quem colaborou com a criação das dicas, e de onde eu tirei tanta informação:
Revista do Linux (Ed. 04 - Vi, vim e venci - Aurélio);
Página do Aurélio (www.verde666.org);
Dicas-L (expandtab) (www.Dicas-L.unicamp.br);
Dicas enviadas pelo amigo Uziel (uhfn@ig.com.br)
Vários tutoriais recolhidos pela internet.