Tips y comandos útiles de Linux que no te sabías

Muchos de los que leeis este blog seguro que os considerareis unos verdaderos eruditos de GNU/Linux, otros simplemente estareis empezando con el pingüino. Sea cual sea vuestro caso aquí teneis una lista con algunos comandos curiosos que quizá no conocíais.

Nota: todos los comandos y tips mostrados a continuación deben escribirse en una sola línea.

  • Deshabilitar el historial de bash (donde se almacenan los últimos comandos ejecutados

rm ~/.bash_history ; ln -sf /dev/null .bash_history

  • Si intentas realizar una tarea reservada el sistema te dirá que no puedes por falta de permisos. Pues bien, si después quieres ejecutar la misma tarea, pero como sudo, en lugar de escribir “sudo” seguido del comando, prueba:

sudo !!

  • Para eliminar una palabra completa en la consola: Mantén presionado ESC y pulsa BACKSPACE (borrar, encima del enter).
  • Si deseas crear múltiples directorios con nombres dir1, dir2, dir3… por ejemplo, usa el comando siguiente (análogamente puedes usar este sistema con otros comandos como touch, para crear archivos):

mkdir dir{1,2,3}

  • Para usar un comando con los mismos argumentos que se le pasaron al comando anterior (en nuestro ejemplo utilizamos el comando touch, pero el sistema es el mismo para cualquier otro):

touch !*

  • Genera aleatoriamente un password (en nuestro ejemplo, de 8 caracteres –para otra longitud cambia el número 8 por el que desees–):

< /dev/urandom tr -dc A-Za-z0-9_ | head -c8 ; echo

  • Para copiar un fichero con nombre muy largo sin tener que escribirlo dos veces puedes utilizar un método llamado expansión, de la siguiente forma:

cp NombreDeArchivoMuyLargo{,.orig}

  • Si deseas ejecutar un comando en consola, pero no quieres que se muestre ninguno de los posibles errores que puedan surgir, lo mejor es redireccionar la salida de error a /dev/null (pongamos que es una especie de agujero negro, XD):

[comando_a_ejecutar] 2> /dev/null

  • Para pasar un manual del comando man a pdf, tal y como vimos en un post pasado, puedes ejecutar (todo en la misma linea):

man -t <nombre_programa> | ps2pdf – > <ruta_destino/nombre_destino.pdf>

  • Si quieres cambiar la extensión a varios archivos a la vez, prueba lo siguiente. Ten en cuenta que en este ejemplo, la extensión que tienen los archivos a modificar es “.txt” y la nueva extensión que queremos asignarles es “.html”, modifícalo a tu gusto según tus necesidades:

for i in *.txt; do mv $i ${i%%.txt}.html; done

  • ¡Demasiados argumentos!. En ciertas ocasiones la consola nos lo dirá, por ejemplo si intentamos ejecutar rm * en un directorio donde haya muchos ficheros. La solución es una pequeña tubería utilizando “ls”  y “xargs”, como la siguiente (en este ejemplo usamos el comando “rm” pero puedes emplear cualquier otro):

ls | xargs rm

  • Si quieres conocer el nombre del directorio en el que te encuentras (Ojo, no me refiero al nombre completo del tipo /home/pepe/…/naturaleza/laguna, sino sólo al nombre. Por ejemplo, en el caso anterior, el nombre sería laguna), puedes usar el siguiente comando:

echo ${PWD##*/}

Espero que os hayan venido bien estos comandos curiosos, más adelante postearé algunos más que me vayan surgiendo.

Un saludo

XenServer Commands Cheat Sheet

Here you are a XenServer Commands Cheat Sheet!

  • Configure SR-IOV
    • /opt/xensource/libexec/xen-cmdline –set-xen iommu=1
    • lspci
    • xe vm-param-set other-config:pci=0/0000:07:10.0 uuid=uuid_of_the_VM
  • Enable and Disable Open VSwitch
    • xe-switch-network-backend bridge
    • xe-switch-network-backend openvswitch
  • Setup Diagnostic Website
    • cd /opt/xensource/www
    • ln –s /opt/xensource/debug/www debug
    • http://masterserverip/debug/index.html
  • Configure Auto Start VMs
    • Pool Config : xe pool-param-set uuid=… other-config:auto_poweron=true
    • VM Config: xe vm-param-set uuid=… other-config:auto_poweron=true
  • iSCSI Commands
    • discover: iscsiadm –mode discovery –type sendtargets –portal <IP-Address of the iSCSI target>
    • login: iscsiadm –mode node –targetname <target IQN you have discovered before> –portal <IP-Address of your Target>:3260 –login
    • logout: iscsiadm –mode node –targetname <target IQN you have discovered before> –portal <IP-Address of your Target>:3260 –logout
  • View TapDisks
    • tap-ctl list
    • ls -l /var/run/sr-mount/…..
  • Compare Template Differences
    • xe template-list name-label=Citrix\ XenApp\ on\ Windows\ Server\ 2003\ \(32-bit)\) params=all >> /root/2k3-32
    • xe template-list name-label=Citrix\ XenApp\ on\ Windows\ Server\ 2008\ \(32-bit)\) params=all >> /root/2k8-32
    • diff –side-by-side –suppress-common-lines /root/2k3-32 /root/2k8-32 (to see which parameters differ)
    • or
    • diff –suppress-common-lines /root/2k3-32 /root/2k8-32 (to see the full difference)
  • Reclaim Disk Space from Deleted XenServer Snapshots (http://support.citrix.com/article/CTX123400)
    • xe host-call-plugin host-uuid=<host-UUID> plugin=coalesce-leaf fn=leaf-coalesce args:vm_uuid=<VM-UUID>
  • Emergency Master Server Failure Recovery
    • xe host-emergency-ha-disable force=true
    • xe pool-emergency-transition-to-master
    • pool-designate-new-master host-uuid=<UUID of member XenServer host to become new master>
    • cat /etc/xensource/pool.conf to reflect to the new master.
    • Restarted XAPI service and it back to the pool.
  • Remove a Lost server from a Resource Pool

xe host-list
xe -s [ip address] -u root -pw PASSWORD pool-sync-database
xe -s [ip address] -u root -pw PASSWORD host-forget uuid=[the above command will provide the UUID]
xe pool-eject host-uuid

  • Copy a VM to another XenServer

xe vm-list (note the name of the VM you wish to copy)
xe sr-list (note the name of the storage you will to copy the VM to)
xe vm-copy (needs the following parameters to complete)
xe vm-copy vm=<name of VM to copy> sr-uuid=<UUID of SR to copy VM to> new-name-label=<NewNameofVM> new-name-description=”Description of VM”

  • Force Pool master Selection

xe pool-emergency-transition-to-master
xe pool-recover-slaves
xe host-list
xe pool-sync-database
xe host-forget

  • Check if XenServer is a Pool Master

cat /etc/xensource/pool.conf
Output says “master” , slaves output “slave:<master host IP>”

  • Enable Open vSwitch

xe-switch-network-backend openvswitch
xe host-list params=software-version

  • Enter XenServer Config Menu via SSH

xsconsole

  • Configure HA Timeout
      • xe pool-ha-enable heartbeat-sr-uuids=021e7e21-1e64-a0b3-2e22-5bbfcfe559e9 ha-config:timeout=10
      • Minimum timeout is 10 seconds
      • Default is 30 Seconds
      • xe pool-ha-compute-max-host-failures-to-tolerate
  • Destroying or forgetting a SR (Storage Repository)


xe -s [host ip] -u root -pw [password] sr-list
xe -s [host ip] -u root -pw [password] pbd-list sr-uuid=
xe -s [host ip] -u root -pw [password] pbd-unplug uuid=
xe -s [host ip] -u root -pw [password] pbd-destroy uuid=
xe -s [host ip] -u root -pw [password] sr-forget uuid=

  • xentop

displays real-time information about Xen system.

  • xen-bugtool –yestoall
  • Set HA Timeouot

xe pool-ha-enable heartbeat-sr-uuids=##### ha-config:timeout=however many seconds you want.

  • VM Operations

xe task-list
xe task-cancle uuid=xe
vm-shutdown –force vm=

  • Overload CPU for testing Workload Balancing

while true ; do true ; donewhile true ; do true ; done &while true ; do `ls –lR /` ; done

  • How to Create a Local Storage Repository (CTX121313)

# cat /proc/partitions
# ll /dev/disk/by-id
Find the disk ID of the “sdb” or “cciss/c0d1”disk. The “scsi-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx” or “cciss-xxxxxxxxxxxxxxxxxxxxxxxxxx”format is what you need.
Create a Storage Repository (SR):
# xe sr-create content-type=user device-config:device=/dev/disk/by-id/<scsi-xxxxxxxxxxxxxxxxxxxxxxxxx> host-uuid=<host-uuid> name-label=”Local Storage 2” shared=false type=lvm-
Or –
# xe sr-create content-type=user device-config:device=/dev/disk/by-id/<cciss-xxxxxxxxxxxxxxxxxxxxxxxxx> host-uuid=<host-uuid> name-label=”Local Storage 2” shared=false type=lvm

  • Cancel XenServer Tasks

xe task-list
xe task-cancel uuid=<task uuid>

  • Install XenTools on Linux

mount /dev/xvdd /mnt
cd /mnt/Linux
./install.sh

QLogic, run scli
Emulex, run hbanywhere
Emulex: /bin/sbin/ocmanager
QLogic FC: /opt/QLogic_Corporation/SANsurferCLI
QLogic iSCSI: /opt/QLogic_Corporation/SANsurferiCLI
Enable HA

  • xe vm-param-set uuid=<vm_uuid> ha-restart-priority=<1> ha-always-run=true
  • xe pool-ha-enable heartbeat-sr-uuids=<sr_uuid>

Reboot Host in HA

  • host-disable host=<hostname>
  • host-evacuate uuid=<host uuid>
  • host-shutdown host=<hostname>

Designate new master

  • Xe pool-designate-new-master host-uuid=<UUID of member XenServer host to become new master>

Pool Emergency Actions

  • host-emergency-ha-disable –force
  • pool-recovery-slaves
  • pool-eject host-uuid=<host UUID>
  • pool-emergency-reset-master master-address=<ip address of pool master>
  • pool-emergency-transition-to-master uuid=<host uuid>
  • xe pool-join master-address=<host1> master-username=<administrators_username> master-password=<password>

Snapshot Copy (Fast Clone)

  • xe snapshot-list snapshot-of=<vm uuid>
  • xe snapshot-copy new-name-label=<vm-template-name> snapshot-uuid=<uuid of the snapshot>
  • xe template-list
  • xe snapshot-export-to-template snapshot-uuid=<uuid of snapshot> filename=<template filename> (.XVA)
  • other-config snapmanager=true
  • xe vm-snapshot-with-quiesce vm=<vm uuid> ne-name-lablel=<name of new vm> (install-XenProvider.cmd)

Memory Consistent Snapshots

  • xe vm-checkpoint vm=<vm uuid> new-name-lable=<name of the snapshot>

Role Based Administration

  • xe subject-add subject-name=[active directory account name]
  • xe subject-role-add uuid=<subject uuid> role-name=<role_name>

Configure Management Interface

  • xe pif-scan, xe pif-list, xe pif-reconfigure-ip, xe host-management-reconfigure

Create NFS ISO Repository

  • xe sr-create host-uuid=<mast uuid> content-type=iso name-lable=<”name”> location=\\10.1.1.1:cds

Create a shared NFS SR on 192.168.1.10:/export1

  • xe sr-create host-uuid=<host_uuid> content-type=user name-label=<”Example shared NFS SR”> shared=true device-config:server=<192.168.1.10> device-config:serverpath=</export1> type=nfs

Physic NIC configuration

  • xe pif-scan
  • xe pif-plug
  • xe pif-introduce

VM in libo

  • xe vm-list
  • xe vm-reset-powerstate uuid=<uuid of VM> force=true

XAPI stack

  • service xapi status
  • service xapi restart
  • xe-toolstack-restart

XenServer Log Files

  • /var/log – XenServer Log Files
  • /etc/logrotate.conf – XenServer Log Rotation Configuration File

Search SR to locate metadata

  • xe sr-probe type=lvmoiscsi device-config:target=IP device-config:targetIQN=IQN device-config:SCSIid=SCSIID sm-config:metadata=true

Check VDI database

  • xe vm-list database:vdi-uuid=$my_vdi

Check inventory

  • . /etc/xensource-inventory
  • xe host-list uuid=$INSTALLATION_UUID

Exporting and Importing VMs via API – http://docs.vmd.citrix.com/XenServer/5.6.0fp1/1.0/en_gb/sdk.html#vm_import_and_export

  • curl http://root:foo@myxenserver1/export?uuid=<vm_uuid> -o <exportfile>
  • curl -T <exportfile> http://root:foo@myxenserver2/import?sr_uuid=<uuid_of_sr>
  • curl -T <exportfile> http://root:foo@myxenserver2/import
  • http://server/import_metadata
  • http://server/export_metadata.