Adsense

quarta-feira, 14 de maio de 2014

Listando usuários em um grupo no Linux

Script para listar usuários em um grupo.

Os script está em inglês, mas manipula grupos dentro do linux ou HP-UX.

Lista usuários dentro de um grupo, sendo ele primário ou secundário.
Lista usuários que tem o grupo como primário somente ou como secundário, de acordo com a opção escolhida.
Exibe o ID do grupo (GID).
Lista todos os grupos da máquina em ordem crescente.

Na duvida use o comando lgroup com a opção --help: lgroup --help

Options to list group:
Use lgroup [option] [group] or lgroup [group] to list all users in primary and secundary group
-p : List only users in primary group
-s : List only users in secundary group
-v : List all users in verbose mode
-i : Show the group GID
-l : List all groups in /etc/group


O objetivo é facilitar a manipulação de grupos no Linux ou sistemas Unix HP-UX, não testado em todas as distribuições.




#! /bin/sh


if [ "$2" != "" ]; then

group=$2;

var=$1;

groupid=`cat /etc/group | grep "^$group:" | awk -F ":" '{ print $3}'`;


    if [ "$groupid" != "" ]; then

        case $var in

                "-p" )
                        cat /etc/passwd | awk -F ":" '{print $4":"$1}' | grep "$groupid:" | awk -F ":" '{print $2}';
                ;;

                "-s" )
                        cat /etc/group | grep  "^$group:" | awk -F ":" '{ print $4}' | tr "," "\n";
                ;;

                "-v" )

                        echo "primary:";
                        cat /etc/passwd | awk -F ":" '{print $4":"$1}' | grep "$groupid:" | awk -F ":" '{print $2}';
                        echo "";
                        echo "secundary:";
                        cat /etc/group | grep  "^$group:" | awk -F ":" '{ print $4}' | tr "," "\n";

                ;;

                "-i")
                        echo "$group:"
                        cat /etc/group | grep $group | awk -F ":" '{ print "gid ("$3")"}';

        esac

   else echo "Can't find group $group";

   fi

elif [ "$1" = "--help" ]; then

                echo -e "\n"
                echo "Options to list group:";
                echo "Use lgroup [option] [group] or lgroup [group] to list all users in primary and secundary group";
                echo "-p : List only users in primary group";
                echo "-s : List only users in secundary group";
                echo "-v : List all users in verbose mode";
                echo "-i : Show the group GID";
                echo "-l : List all groups in /etc/group";
                echo -e "\n\n"

elif [ "$1" = "-l" ]; then

        cat /etc/group | awk -F ":" '{ print $3":"$1}' | sort -n | awk -F ":" '{ print "group("$2") gid("$1")"}';

else

                group=$1;
                groupid=`cat /etc/group | grep "^$group:" | awk -F ":" '{ print $3}'`;

      if [ "$groupid" != "" ]; then

                cat /etc/group | grep  "^$group:" | awk -F ":" '{ print $4}' | tr "," "\n"

                cat /etc/passwd | awk -F ":" '{print $4":"$1}' | grep "$groupid:" | awk -F ":" '{print $2}'
      else echo -e "\nPlease enter option and group or put --help to get help\n";

      fi

fi

quinta-feira, 13 de outubro de 2011

Criando um Servidor RIS com Syslinux usando Debian

Criando servidor Ris Com Debian 6.0 Squeezy

Primeiro passo vamos instalar os pacotes necessários para que nosso servidor funcione.
São eles:
tftpd-hpa
dhcp3-server
syslinux
nfs-kernel-server
initramfs-tools

Todos por padrão vem no repositório do Debian Lenny 5.0 ou Debian Squeezy
apt-get install dhcp3-server tftpd-hpa syslinux nfs-kernel-server initramfs-tools
Após os devidos pacotes instalados vamos configurar o dhcp para a rede dos terminais que vão ser instalados os programas.

No meu caso configurei em "/etc/network/interfaces" a rede da seguinte maneira:
auto eth1
iface eth1 inet static
address 10.0.0.1
netmask 255.255.255.0

Agora vamos editar o arquivo de configuração do DHCP.
vim /etc/dhcp/dhcpd.conf
Configure o da seguinte forma

subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.10 10.0.0.200;
option routers 10.0.0.1;
option domain-name-servers 10.0.0.1;
option broadcast-address 10.0.0.255;
filename "pxelinux.0";
}

Configurando agora o TFTP Server "vim /etc/default/tftpd-hpa".

#/etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/tftpboot" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--secure"

Vamos configurar agora o diretório root, de onde o pxe ira obter os arquivos de configuração:
mkdir /tftpboot/pxelinux.cfg
Agora colocaremos os arquivos necessários para a inicialização remota no seu devido lugar:
cp /usr/lib/syslinux/* /tftpboot
Utilizei apenas configurações para inicializar através de disquetes ou imagens iso, a inicialização de iso é simples, desde que não se queira um grub para a escolha do sistema, e este assunto não será tratado aqui.

Editando arquivo de configuração para o boot:
/tftpboot/pxelinux.cfg/default
vim /tftpboot/pxelinux.cfg/default 

TIMEOUT 0  

PROMPT 1


#Boot disco com suporte a placa de rede e norton ghost

LABEL Dos

KERNEL memdisk

APPEND initrd=bootdisco.img

#Boot com imagem iso, suporte a instalação do Windows 7

LABEL Win7PE

KERNEL memdisk

APPEND iso initrd=win7pe.iso
As imagens deverão estar todas dentro de /tftpboot, para que o arquivo de configuração default o encontre.
Como visto acima por padrão ele boota discos no formato img mas adicionando iso na frente ele permite a inicialização de imagens de cd-rom.
Lembrando que a imagem é carregada toda na memória do pc, então caso usem a imagem de instalação direta do Windows 7 que tem mais de 1Gb, ela não inicializará em um pc com pouca memória.
para inicializar a opção escolhida, após o boot: coloque o texto contido na frente do "LABEL", ele é case sensitive.
Agora no computador a ser instalado, deve estar configurado pela BIOS para inicializar primeiro pela placa de rede.

Abaixo segue links para lhe ajudar a criar discos de boot ou tratar mais informações.
http://www.savelono.com/linux/how-to-install-windows-7-over-a-network-using-linux-pxe-dnsmasq-and-samba.html
http://netbootdisk.com/usage.htm
http://www.vivaolinux.com.br/etc/smb.conf-14
http://oss.netfarm.it/guides/pxe.php
http://www.vivaolinux.com.br/artigo/Instalacao-de-configuracao-do-RIS-para-gerenciamento-de-imagens-Ghost-no-Windows?pagina=1

sexta-feira, 26 de agosto de 2011

Usando partições VxFS no Red Hat 5.0

Instalando e criando partições VxFS no Red Hat Linux.


  • Configurações prévias


Edite os arquivo “/etc/hostname” e “/etc/hosts” e insira o nome de sua máquina para que a instalação possa resolver os nomes através da rede.

No arquivo “hostname” deve conter apenas o nome da máquina, já no arquivo “hosts” deve conter primeiro o ip externo da máquina e depois o seus nomes ex: maquina, maquina.local, maquina.com.br, todos os nomes necessários para serem resolvidos através da rede.


  • Download do Software necessário para instalação do sistem VxFS


Entre na página abaixo e faça o download do arquivo .tar.gz necessário para instalação no Red Hat.

https://www4.symantec.com/Vrt/offer?a_id=24928

Caso seja solicitado um prévio cadastro, por favor realize-o para que os procedimentos abaixo possam ser realizados.

Descompacte os arquivos para a instalação:

[root@vxfsteste tmp]# tar -xzvf VRTS_SF_HA_Solutions_5.1_SP1_RHEL.tar.gz


Depois entre na pasta criada para que possamos instalar o Verita File System:

[root@vxfsteste tmp]# cd dvd1-redhatlinux/rhel5_x86_64/


Execute o programa de instalação:

[root@vxfsteste rhel5_x86_64]# ./installer


A tela abaixo será exibida para você:

Task Menu:


P) Perform a Pre-Installation Check I) Install a Product

C) Configure an Installed Product G) Upgrade a Product

O) Perform a Post-Installation Check U) Uninstall a Product

L) License a Product S) Start a Product

D) View Product Descriptions X) Stop a Product

R) View Product Requirements ?) Help


Enter a Task: [P,I,C,G,O,U,L,S,D,X,R,?]


Digite “I” para instalar os módulos necessários, você será redirecionado para uma nova tela conforme abaixo.

1) Veritas Dynamic Multi-Pathing (DMP)

2) Veritas Cluster Server (VCS)

3) Veritas Storage Foundation (SF)

4) Veritas Storage Foundation and High Availability (SFHA)

5) Veritas Storage Foundation Cluster File System (SFCFS)

6) Veritas Storage Foundation Cluster File System/HA (SFCFSHA)

7) Veritas Storage Foundation for Oracle RAC (SFRAC)

8) Veritas Storage Foundation Cluster File System for Oracle RAC (SFCFS RAC)

9) Symantec VirtualStore (SVS)

10) Symantec Product Authentication Services (AT)

b) Back to previous menu


Select a product to install: [1-10,b,q]


Para urilizarmos localmente usaremos a opção “3”, depois ele solicitará o nome da máquina para a instalação. Como dito anteriormente o arquivo “/etc/hotname” tem que conter o nome de sua máquina local e o arquivo /etc/hosts, deve conter o ip externo e o nome da máquina local ou servidor.

  • Iniciar discos

Vá até o gerenciador de volumes lógicos do Red Hat, apenas inicie os volumes que vá trabalhar.

Depois reinicie o servidor, os discos ficaram ativos para o sistema, então volte para o gerenciador e remova eles, pois eles estão amarrados ao gerenciador e os programas do Verita não conseguirão trabalhar com eles.

Entre na pasta /opt/VRST/bin, que é onde se encontram os todos os programas que necessitamos trabalhar.

Após remover execute o comando abaixo para que os discos sejam inicializados e herdados pelo gerenciador de volumes do Verita.

./vxdisksetup -i sdb

./vxdisksetup -i sdc

    Digite na linha de comando ./vxdisk list, deverá aparecer como mostra abaixo

[root@vxfsteste bin]# ./vxdisk list


DEVICE TYPE DISK GROUP STATUS

sda auto:none - - online invalid

sdb auto - - error

sdc auto - - error


Neste caso não conseguiremos trabalhar com as partições , porque elas tem de ser do tipo “cdsdisk”, porém a uma forma de contornar isto.

Para que possamos criar uma partição VxFS, antes temos de criar um grupo e adicionar a partição, e para isso usamos o comando baixo que já inclui a opção de adicionar discos não “cdsdisk”.

./vxdg init testdg sdb cds=off

./vxdg init testdg2 sdc cds=off


Deverá ficar como na janela abaixo


DEVICE TYPE DISK GROUP STATUS

sda auto:none - - online invalid

sdb auto:cdsdisk sdb testdg online

sdc auto:cdsdisk sdc testdg2 online


Os discos já estão prontos para serem trabalhados, podem ser particionados e formatados.

Vamos verificar o tamanho dos discos agora:

Vamos verificar quanto tem de espaço para criarmos e/ou aumentar um filesystem.

./vxassist -g testdg maxsize



No meu caso como cada disco tem 50Gb a resposta será esta:

Maximum volume size: 104660992 (51104Mb)



Primeiro vamos criar um volume lógico para depois criar um filesystema para este disco.



vxassist -g testdg make oracle1 49900m

vxassist -g testdg1 make oracle2 49900m



Agora temos os volumes lógicos oracle1 e oracle2, todos com 50Gb, atenção os valos foram colocados acima desta forma, pois não é possível criar um disco integral de 50Gb, um pouco do espaço é perdido.

Podemos visualizar no Red Hat os grupos e os volumes lógicos listando tudo dentro de “/dev/vx/rdsk”:

[root@vxfsteste bin]# ls /dev/vx/rdsk/

testdg testdg2



Os dois grupos são o que criamos realmente e aparecem quando listamos os discos através de “./vxdisk list”.

Listando agora o conteúdo de cada grupo temos de enxergar os volumes lógicos criados, oracle1 e oracle2.

[root@vxfsteste bin]# ls /dev/vx/rdsk/testdg/

oracle1



Agora já podemos criar uma partição com o volume que criamos.

Podemos ter mais de uma partição, mas como criamos as duas no tamanho dos disco que era de 50Gb, vamos formata-la e montar agora.

[root@vxfsteste bin]# ./mkfs -t vxfs -o largefiles /dev/vx/rdsk/testdg/oracle1

version 7 layout

102195200 sectors, 51097600 blocks of size 1024, log size 65536 blocks

largefiles supported



No cado do Red Hat usamos a opção mkfs -t vxfs, no HP-UX seria mkfs -F vxfs.

Vamos agora criar os diretórios aos quais serão montadas as partições, eu criei respectivamente oracle1 e oracle2.

[root@vxfsteste bin]# mkdir /oracle1

[root@vxfsteste bin]# mkdir /oracle2



Agora devemos montar a partições nas pastas criadas.

[root@vxfsteste bin]# mount -t vxfs /dev/vx/dsk/testdg/oracle1 /oracle1

[root@vxfsteste bin]# mount -t vxfs /dev/vx/dsk/testdg2/oracle2 /oracle2



Pronto, as partições já estão montadas e podem ser usadas.

Adicionando partições VxFS no fstab:

Para adicionar as partições no fstab, elas devem estar como nas configurações descritas abaixo.

[root@vxfsteste bin]# vim /etc/fstab



# NOTE: When adding or modifying VxFS or VxVM entries, add '_netdev'

# to the mount options to ensure the filesystems are mounted after VxVM and

# VxFS have started.

/dev/vx/dsk/testdg/oracle1 /oracle1 vxfs _netdev,log,mincache=closesync,largefiles 1 2

/dev/vx/dsk/testdg2/oracle2 /oracle2 vxfs _netdev,log,mincache=closesync,largefiles 1 2



Onde nós temos, o caminho do volume e da partição, o caminho a ser montado, o tipo de partição e a quarta opção não pode ser mudada, para que a partição só seja montada após a inicialização do sistema do Verita Files System.





  • Links Úteis

http://www.blacksheepnetworks.com/security/resources/veritas/veritas_lvm_cs.htm

http://pbraun.nethence.com/doc/filesystems/sfcfs_1_admin.html

http://www.symantec.com/business/support/index?page=content&id=TECH31228

http://www.walkernews.net/2007/07/02/how-to-create-linux-lvm-in-3-minutes/

http://www.arizonaed.com/unix/hpux-lvm.txt

http://www.cocoanet.us/dantepasquale/blog/tech-tips/veritas-cluster-file-system-on-redhat-5u4

http://pbraun.nethence.com/doc/filesystems/sfcfs_1_admin.html

http://www.plugmasters.com.br/sys/materias/311/1/Administra%E7%E3o-Veritas

http://www.symantec.com/connect/forums/fsck-check-vxvm-volume-fails-during-boot

terça-feira, 28 de setembro de 2010

Imagem de fundo dinâmica na página html

Boa noite,

Depois de muito tempo de ter criado o Blog para iniciantes de programação e posteriormente eletrônica venho postar meu primeiro artigo.
Este artigo trata de como alterar o tamanho da imagem de fundo de uma página dinâmicamente, o que para muitos é uma dificuldade grande.
Utilizo um código em php modificado com os fontes citados no próprio código.

Primeiro precisamos escrever o código em php que fará a conversão do tamanho da imagem, para isto utilizamos o código abaixo.

<?php
#recebendo a url da imagem
$filename = $_GET['img'];
$sizeW = $_GET['sizeW'];
$sizeH = $_GET['sizeH'];

#Cabeçalho que ira definir a saida da pagina
header('Content-type: image/jpeg');

#pegando as dimensoes reais da imagem, largura e altura
list($width, $height) = getimagesize($filename);

#setando a largura da miniatura
$new_width = $sizeW;
#setando a altura da miniatura
$new_height = $sizeH;

#gerando a a miniatura da imagem
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

#o 3º argumento é a qualidade da miniatura de 0 a 100
imagejpeg($image_p, null, 50);
imagedestroy($image_p);

//Para salvar a imagem/thumb em um diretório altere a linha
//imagejpeg($image_p, null, 50);
//para
//imagejpeg($image_p, ‘/diretorio/nomeImagem.jpg/’, 50);
//Origem: http://clares.wordpress.com/2008/02/13/gerando-miniaturas-de-imagens-c-php/
//Publicado: fevereiro 13, 2008 por Rafael Clares em PHP
//Modificado: Robson Assis Candido Pereira Faria
?>

Com o código acima através de uma método get padrão passamos o arquivo a ser modificado e quais as dimensões ele deve ter.
Veremos agora como escrever na página html com javascript a tag body com a figura com as dimensões corretas.

<script>
document.write("<body background="'thumb.php?img=imagem.jpg&sizeH="+screen.height+"&sizeW="+screen.width+">");
</script>

No código acima utilizamos screen.height e screen.width para pegar as dimensões da tela, caso queira visualizar melhor o que as duas variáveis fazem, use um alert(screen.height+"x"+screen.width); dentro das tags .

Os dois códigos em conjunto fazem todo o feito, lembrando que o código javascript deve estar no lugar da tag e que o código php deve estar dentro de thumb.php como é chamado no javascript e na mesma pasta que o arquivo html.

O exemplo de figura que eu utilizo está dentro da pasta imagens, que deve estar na raiz junto com o arquivo html e php.

Segue a página html completa:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script>
//alert(screen.width+"x"+screen.height);
</script>
</head>
<script>
document.write("<body background="'thumb.php?img=imagem.jpg&sizeH="+screen.heigth+"&sizeW="+screen.width+">");
</script>
</body>
</html>

Espero ter colaborado.

quarta-feira, 3 de fevereiro de 2010

Iniciando!!!

Nosso blog inicia agora suas atividades!!