mson77

With great power comes great responsibility.

agosto 19, 2009

"Mostrar arquivos ocultos" --> não funciona

A dica abaixo será útil se algum dia você tentar "Mostrar arquivos ocultos" e não conseguir. Siga os passos abaixo:

1) execute o regedit.exe (iniciar > executar > regedit.exe)

2) procure a chave de registro:

  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL

3) verifique o valor de registro CheckedValue. Ele deve ser do TIPO REG_DWORD. Se for, siga para o passo 4, senão vá para o passo 5.

4) dê um duplo clique ou enter para editá-lo e em "Dados do valor" coloque o número 1. agora ok e feche o regedit.

5) se o TIPO do valor CheckedValue for REG_SZ vc terá que apagá-lo (delete nele e confirme). agora clique com o botão direito em cima da chave SHOWALL > Novo > Valor DWORD. escreva CheckedValue no campo nome. dê um clique duplo ou enter nele e altere seu valor de dados para 1. agora ok e feche o regedit.

Seu novo valor de registro deve ficar assim:

Nome - Tipo - Dados
CheckedValue REG_DWORD 0x00000001(1)

Pronto, isso deve funcionar!

agosto 14, 2009

Opções da Pasta... (ausente)

A receita abaixo é útil quando no Windows Explorer, no menu Ferramentas... você não dispõe do comando:
  • Opções da Pasta...
É controlada através da diretiva: NoFolderOptions:dword

Abra o Bloco de Notas. Copie e cole o texto abaixo e salve como:
  • folderoptions.reg
Execute o "folderoptions.reg"

Necessário reiniciar o Windows.

-------------------------------------
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\
Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoFolderOptions"=dword:0000000

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Restrictions]
"NoBrowserOptions"=dword:00000000

-------------------------------------

Edição de REGISTRO: ativar ou desativar

Abra o Bloco de Notas e copie e cole o texto abaixo.
Depois salve com nome: regtools.vbs

---------------------------------
'Enable/Disable Registry Editing tools
'© Doug Knox - rev 12/06/99

Option Explicit

'Declare variables
Dim WSHShell, n, MyBox, p, t, mustboot, errnum, vers
Dim enab, disab, jobfunc, itemtype

Set WSHShell = WScript.CreateObject("WScript.
Shell")
p = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\"
p = p & "DisableRegistryTools"
itemtype = "REG_DWORD"
mustboot = "Log off and back on, or restart your pc to" & vbCR & "effect the changes"
enab = "ENABLED"
disab = "DISABLED"
jobfunc = "Registry Editing Tools are now "

'This section tries to read the registry key value. If not present an
'error is generated. Normal error return should be 0 if value is
'present
t = "Confirmation"
Err.Clear
On Error Resume Next
n = WSHShell.RegRead (p)
On Error Goto 0
errnum = Err.Number

if errnum <> 0 then
'Create the registry key value for DisableRegistryTools with value 0
WSHShell.RegWrite p, 0, itemtype
End If

'If the key is present, or was created, it is toggled
'Confirmations can be disabled by commenting out
'the two MyBox lines below

If n = 0 Then
n = 1
WSHShell.RegWrite p, n, itemtype
Mybox = MsgBox(jobfunc & disab & vbCR & mustboot, 4096, t)
ElseIf n = 1 then
n = 0
WSHShell.RegWrite p, n, itemtype
Mybox = MsgBox(jobfunc & enab & vbCR & mustboot, 4096, t)
End If

---------------------------------

fonte URL

junho 30, 2009

Acessar Banco de Dados MySQL v5.0 a partir de Delphi 7

O Delphi 7 incorpora um componente chamado "dbExpress".
Esse componente permite acessar banco de dados MySQL até a sua versão 4 (mysql v4). OU seja, podemos acessar o banco de dados MySQL diretamente através desse componente, sem usar par: BDE e mysql_ODBC driver (myODBC).

Como fazer para acessar a nova versão MySQL v5?

Requisitos:
Passo-a-passo:

1) No caminho: "C:\Arquivos de programas\Borland\Delphi7\Bin\" copie o arquivo dbxopenmysql50.dll

2) No caminho: "C:\Arquivos de programas\Arquivos comuns\Borland Shared\DBExpress" abra o arquivo "dbxdrivers.ini" com algum editor de textos e...

Na seção [Installed Drivers] adicione a linha:
  • MySQL50=1

E crie uma seção [MySQL50] contendo:

[MySQL50]
GetDriverFunc=getSQLDriverMYSQL50
LibraryName=dbxopenmysql50.dll
VendorLib=libmysql.dll
HostName=ServerName
Database=DBNAME
User_Name=user
Password=password
BlobSize=-1
ErrorResourceFile=
LocaleCode=0000


3) Copie o arquivo "libmysql.dll" para a pasta:
  • C:\Windows
ou
  • C:\Arquivos de programas\Borland\Delphi7\Bin\

4) Crie no Delphi:

março 11, 2009

Renaming Network Interfaces

Método udev:


editar arquivo:
/etc/udev/rules.d/70-persistent-net.rules


Conteudo: (exemplo kubuntu)

# This file maintains persistent names for network interfaces.
# See udev(7) for syntax.
#
# Entries are automatically added by the 75-persistent-net-generator.rules
# file; however you are also free to add your own entries.

# PCI device 0x1106:0x3065 (via-rhine)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:d8:64:01:e7", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x1904:0x2031 (sc92031)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:e0:20:12:65:b2", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x10ec:0x8139 (8139too)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:02:2a:da:30:28", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"



Ferramentas de auxilio:
  • mii-tool
  • ethtool

fevereiro 22, 2009

Logical Interface Names

How to reorder or rename logical interface names in Linux


One of the problems of Linux is that the order of the network interfaces is unpredictable. Between reboots it usually stays the same, but often after an upgrade to a new kernel or the addition or replacement of a network card (NIC) the order of all network interfaces changes. For example, what used to be eth0 now becomes eth1 or eth2 or visa versa.

Obviously there is some logic to which network interface gets which name, but Linux documentation states that this may change and no user or program should ever assume anything about this. This is annoying, in particular if your management interface is at eth1 at one node in a cluster and at eth2 in another node of the same cluster (which we have experienced). I personally like to have my (primary) management interface always to be eth0.

Thankfully, there are ways to achieve this. They can be divided in four methods:
1. Order the network interfaces based on physical properties of the NIC. (e.g. the physical location in the machine)
2. Order the network interfaces based on the MAC address of the NIC.
3. Order the network interfaces based on the driver of the NIC.
4. Order the network interfaces based on the physical location of the NIC in the computer

So you have to pick a method that suits you. I recommend either to use ifrename (based on physcial properties, especially useful if you often change network cards in your hosts) or writing a udev rule (based on the MAC address). However, I listed the other methods as well. Be aware that the last two methods mentioned in this article are only for the masochistic (you will scream and shoot to get those to work).

Note: Linux kernels up to 2.4 did only probe for the first Ethernet card, ignoring other NICs. We assume you use a 2.6 or higher kernel or already fixed this, for example by specifying ether=0,0,eth1 as kernel parameter.

Based on the physical properties


Perhaps the most elegant way to name the ethernet NIC is to do so based on their physical properties, like link speed and port type.

Using the ifrename tool

Ifrename is a tool specifically designed to (re)name network interfaces based on characteristics like MAC address (wildcards supported), bus information, and hardware settings. It uses a control file (/etc/iftab) to specify rules about how the interfaces will be named. (thanks to Matt Baron for this tip.)

# Example /etc/iftab file
eth2 mac 08:00:09:DE:82:0E
eth3 driver wavelan interrupt 15 baseaddress 0x390
eth4 driver pcnet32 businfo 0000:02:05.0
# wildcard name: pick the lowest available name of air0, air1, air2, etc.
air* mac 00:07:0E:* arp 1


Using the ethtool and ip programs

It is possible to check the NIC properties using the ethtool program, and to change the name using the ip program (thanks to Jollynn Schmidt for this tip):

if ethtool eth0 | grep -q "Port: FIBRE"; then
ip link set dev eth0 name not_eth0
ip link set dev eth1 name eth0
ip link set dev not_eth0 name eth1
fi


The disadvantage of ethtool is that it can only be run by root, even when you're only using it to query for information. Though this is a minor annoyance of ethtool, it doesn't matter in this case, since you want to set a device name and thus need to be root anyway.

Based on the MAC address


Secondly, it is also possible to name the network interface based on the MAC address of each NIC. The advantage is that it is possible to use this method if you have two NICs which use the same driver (unlike the next method: based on driver).

First, you must determine the MAC address of your interfaces. You can do this locally on a machine running
ifconfig -a

The MAC address is listed as "hwaddr" (hardware address). Alternatively, you can even determine MAC addresses remotely using ping and /sbin/arp.

There are three ways to map the MAC address to the logical interface name. Either by using the udev rules, with the get-mac-address.sh script, or by using the nameif program.

The udev method should work on all recent Linux distributions, and is recommended. The get-mac-address.sh script and the nameif program are know to work with Debian, while on Red Hat, you can change the interface configuration file.

Using udev rules
udev replaced devfs in Linux 2.6. First make sure that your Linux system has udev installed, rather then devfs. If you have a /etc/udev directory, but not /etc/devfs directory, you are probably fine. If not, be aware that changing your kernel from devfs to udev is possible, but is not just a matter of adding a new module. Perhaps for now, another method is easier for you.

Now that you have udev, it is rather simple. You only need to create a udev rule mapping the MAC address to the interface name. Store this in a file inside the /etc/udev/rules.d/ directory:
KERNEL=="eth?", SYSFS{address}=="00:37:e9:17:64:af", NAME="eth0"  # MAC of first NIC in lowercase
KERNEL=="eth?", SYSFS{address}=="00:21:e9:17:64:b5", NAME="eth1" # MAC of second NIC in lowercase


Most distibutions already come with an example config file for you. E.g. /etc/udev/rules.d/network-devices.rules or /etc/udev/rules.d/010_netinterfaces.rules. More information can be found at http://www.reactivated.net/writing_udev_rules.html or http://www.debianhelp.co.uk/udev.htm. (Thanks to Casey Scott and Ron Hermsen for the pointers.)

Another rule I've seen is:
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:16:3e:00:02:00", NAME="eth0"
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:16:3e:00:02:01", NAME="eth1"


I'm not sure about the difference between these rules. Information is welcome (please leave a comment below)


Using the interface configuration file
If you run a Red-Hat-based distribution, you can simply add the MAC addres in the interface configuration file /etc/sysconfig/network-scripts/ifcfg-eth0:

DEVICE=eth0
HWADDR=00:37:e9:17:64:af


You can give it any DEVICE name you want, like DEVICE=ethmgmt, as long as you remember to rename the config file:
/etc/sysconfig/network-scripts/ifcfg-ethmgmt

Source: http://forums.serverwatch.com/showthread.php?t=18476

Using the get-mac-address.sh script
Another solution is to use the get-mac-address.sh script to map interface names by MAC address. On Debian, this script is distributed as part of the ifupdown package (in /usr/share/doc/ifupdown/examples/get-mac-address.sh). Copy this script to a saner place (e.g. /usr/local/bin), and you can setup /etc/network/interfaces in this manner:

auto lo eth0 eth1

iface lo inet loopback

mapping eth0 eth1
script /usr/local/bin/get-mac-address.sh
map 00:37:E9:17:64:AF netA
map 00:21:E9:17:64:B5 netB

iface netA inet static
address etc...

iface netB inet static
address etc...


Source: https://www.gelato.unsw.edu.au/archives/gelato-technical/2004-February/000334.html

The disadvantage of this method is that defines a mapping, rather then changing the actual logical interface name.

Using the nameif program

Alternative to the get-mac-address.sh script, you can also use the slightly more convenient nameif program, which is distributed as part of the net-tools package on Debian.

The advantage of nameif is that you can specify the interface names in the /etc/mactab file:
ethmgnt 00:37:E9:17:64:AF
ethwireless 00:21:E9:17:64:B5


It is not possible to rename an interface to a name of an existing interface. So you can't rename eth1 to eth0 as long as eth0 still exists. It is possible to still swap the names eth0 and eth1 by using a temporary name (e.g. first rename eth1 to ethfoo, then eth0 to eth1 and finally ethfoo to eth0). Note that this method may lead to problems if you use common names such as eth0 and eth1. If you upgrade a kernel, the names may be different than you expected, and you may rename a NIC to eth0 while eth0 still exists, leading to name collisions. Therefor, it is recommended to use other names like "ethmgmnt", "ethwired", "ethwireless" and "eth10ge", as shown in the example above.

Based on the driver


Warning: This only works if the driver is available as a loadable module. Not if it is built into the kernel.

This is a relative easy method, since it does not rely on external scripts. The idea is to just load the kernel module for your eth0 interface before the modules for other network cards.

First of all, you must determine which driver is used for each network card. Thankfully Linux does have a system to load the appropriate driver automatically, based on the PCI ID of the network card. Unfortunately, there is no single command to simply get the driver (and other information like the link speed) based on just the interface name in Linux. Your best bet is to look for kernel messages:
dmesg | grep eth

This should give you a good estimate of the driver name. You can verify if the name indeed does exist and is loaded:
lsmod


Note:
lsmod gave:
e1000           84868  0
tg3 70816 0

However, the 0 indicates that these drivers are not controlling any device! That is strange, since modprobe -r tg3 and modprobe -r e1000 do disable the network cards. Apparently, this is a flaw in lsmod.

Note that running modprobe tg3 en then modprobe e1000 does bring them up in the correct order, with the correct interface names. This is a good check if this approach (using the driver to decide the interface name) can work.

Red Hat
In Red Hat, if the driver is called "tg3" (the Tigon driver), you simply specify the network name by adding this enty in /etc/modules.conf:
~alias eth0 tg3


Debian
On a Debian system, /etc/modules.conf is generated automatically and should not be edited directly. Instead, create a file in the subdirectory /etc/modules/ (do not use /etc/modprobe.d/, that seems out-of-date). For example, create the file /etc/modutils/interfaces and add the appropriate modules. For example:
alias eth0 tg3
alias eth1 e1000

Next, update /etc/modules.conf by running:
update-modules


Alternative method: I have encountered scenario's where the kernel did already load the modules for the drivers, even before /etc/modules.conf was read. The result was that in effect, the specification in /etc/modules.conf was ignored, and this method did not work. As an alternative, it is possible to also list the drivers, in the appropriate order, in /etc/modules (thus not /etc/modules.conf):
tg3
e1000

The result will be that the tg3 driver is loaded before the e1000 kernel. Since /etc/modules only exists for Debian, this trick will most likely not work for other distributions.

Based on the physical location in the computer


Warning: This only works if the driver is built into the kernel, not as a loadable module.

Note: It is relatively hard to get this to work, and we encountered problems with it. The other methods are recommended.

It is possible to name the network interfaces based on the interrupt (IRQ) and memory address. This should work if you have network cards in PCI busses, and it involves appending the proper parameters to the "ether=" or "netdev=" kernel parameters.

First of all, you can detect the PCI slot of the devices using
lspci -v
This is reported to fail sometimes for certain cards. Now, write down the IRQ and IO (memory) address of each network card, and use this information to specify the interface name in your LILO or GRUB configuration file.

For LILO, you need to add an add line to the appropriate boot configuration. For example:
append="netdev=irq=21,io=0x2040,name=eth0 netdev=irq=20,io=0x3000,name=eth1 netdev=irq18,io=0x2000,name=eth2"

Under grub, it can just be listed as parameter. e.g.:
kernel /boot/vmlinuz netdev=irq=24,name=eth0


More Information
http://www.tldp.org/HOWTO/Ethernet-HOWTO-8.html
http://www.tldp.org/HOWTO/BootPrompt-HOWTO-11.html


Written by Freek Dijkstra. Licensed under public domain. (That is, feel free to modify, redistribute, cripple, or even sell it as your own work, and there is no need to mention the source, even though you are of course welcome to do so.)

Categories
CategorySysAdmin
CategoryProcedures
Comments [Hide comments/form]
I had to change the name of an interface that was used to netboot.

Linux doesn't allow changing the name of an active interface and bringing down the netbooted interface meant losing the ability to access the very programs needed to perform the name change. My solution (excerpted below) included a chroot. The code below uses "nameif" but could almost as easily used "ifrename" and probably even "udev". This code runs on Fedora 7.

#!/bin/sh
#
# Use "chroot" to allow changing the name of an interface that
# has been used to net boot to (such that bringing down that
# interface will cause loss of ability to access any of the
# operating system programs)
#
dir=/var/tmp/nameifRoot # location on local machine
mac=00:01:02:03:04:05 # change to mac address of interface to change
oldname=eth0 # change to current name of interface
newname=control # change to what you want the interface called
#
# Figure out what is needed in the chroot area
#
needed=""
#
# Use "ldd" to figure out what libraries are needed for the given
# executables. The executables are returned with a trailing ':',
# hence the sed command to strip all the colons (this colon
# stripping is simple and expediant and will fail miserable if a
# colon shows up in the path of one of the needed files).
#
lddout=`ldd /sbin/nameif /sbin/ifconfig /bin/sh | sed 's/://'`
for w in ${lddout}
do
#
# ldd spits out lots of words that are not paths,
# we decide that the only thing that are paths are
# words that start with a '/'
#
c1=`echo $w | cut -c1`
if [ "$c1" = "/" ]
then
needed="${needed} $w"
fi
done
#
# Know now what is needed, do the copying
#
for l in ${needed}
do
mkdir -p ${dir}/`dirname ${l}`
cp $l ${dir}/$l
done
#
# Make the "mactab" file for "nameif" to use.
#
mkdir -p ${dir}/etc
echo "${newname} ${mac}" > ${dir}/etc/mactab
#
# Mount "proc" (nameif and ifconfig use it)
#
mkdir -p ${dir}/proc
mount -t proc proc ${dir}/proc
#
# Make a /dev/null (mostly so we don't have to see the errors)
#
mkdir -p ${dir}/dev
mknod -m 666 ${dir}/dev/null c 1 3
#
# Make the program to run. Bring down the ethernet interface,
# do the nameif, and then bring everything back up again.
#
cat <<@eof > ${dir}/go
ifconfig ${oldname} down >& /dev/null
nameif
ifconfig ${newname} up >& /dev/null
ifconfig ${oldname} up >& /dev/null # just in case nameif failed
@eof
chmod 700 ${dir}/go
#
# Do the renames
#
(chroot ${dir} /go) &
#
# what happens when the network goes away? Apparently, wait will
# wait for it to come back :-)
#
wait
#
# Cleanup
#
umount ${dir}/proc
rm -rf ${dir}
echo "done"
-- MichaelHeyman (2007-10-29 14:49:57)
Page was generated in 0.0364 seconds

setembro 12, 2008

Como fazer DUMP no MySQL

Primeiramente usamos o utilitário "mysqldump"


Exemplo:


  • mysqldump -u[user] -p[password] [database] > [path]/meuDB.sql





Abraços,