Abrir SQL-Server Management Studio desde el intérprete de comandos

¿Cómo abro el Management Studio de SQL-Server desde el terminal de comandos? Pues si es el de SQL-Server 2005 ejecutando sqlwb.exe

sqlwb.exe

Acepta varios parámetros:

  • -S: La instancia a la que nos conectamos
  • -d: La base de datos a la que nos conectamos
  • -E: Usar autenticación de Windows
  • -U: Usuario de SQL-Server
  • -P: Contraseña del usuario
  • [file_name[, file_name]]: Ficheros a cargar

Para SQL-Server 2008 o SQL-Server 2012 se usa SSMS.exe

SSMS.exe

La lista de parámetros que acepta es la misma que en el 2005, podéis verla arriba.

Anuncios

SQL-Server: Crear una tabla auxiliar con Fechas comprendidas entre dos fechas dadas

A veces necesitamos una tabla calendario. De hecho muchas veces la necesitamos. ¿Cómo podemos crear una tabla ad-hoc con todas las fechas comprendidas entre dos fechas dadas en SQL-Server? Pues de la siguiente forma:

DECLARE @FechaInicio date
DECLARE @FechaFin date

--En este punto le doy valor a las fechas

Select @FechaInicio = '01/01/2017'
Select @FechaFin = '01/07/2017'

--Aquí creamos la variable tabla con los valores
DECLARE @dim TABLE ([Fecha] DATE)

	INSERT @dim([Fecha])
	SELECT d
	FROM
	(
	  SELECT
		  d = DATEADD(DAY, rn - 1, @FechaInicio)
	  FROM 
	  (
		  SELECT TOP (DATEDIFF(DAY, @FechaInicio, @FechaFin)) 
			  rn = ROW_NUMBER() OVER (ORDER BY s1.[object_id])
		  FROM
			  sys.all_objects AS s1
		  CROSS JOIN
			  sys.all_objects AS s2
		  ORDER BY
			  s1.[object_id]
	  ) AS x
	) AS y;

--Aquí hacemos un select sobre dim para ver el resultado
Select Fecha from @dim

Instalar los iconos Papirus en Linux

La colección de iconos Papirus incluye más de mil elegantes y minimalistas iconos para los programas más populares de Linux y es una de las colecciones preferidas por los usuarios. ¿Cómo podemos agregarla a nuestro linux? Vamos con las instrucciones para Ubuntu y para Debian.

iconos papirus

En Ubuntu:

sudo add-apt-repository ppa:papirus/papirus
sudo apt-get update
sudo apt-get install papirus-icon-theme

En Debian:

sudo tee /etc/apt/sources.list.d/papirus-ppa.list << EOF
deb http://ppa.launchpad.net/papirus/papirus/ubuntu xenial main
EOF

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com E58A9D36647CAE7F
sudo apt-get update
sudo apt-get install papirus-icon-theme

Otra opción para Ubuntu puede ser recurrir a descargar el .deb e instalar con el agregador de paquetes.

Creando contraseñas en Linux con mkpasswd

El programa mkpasswd, que es parte del paquete whois, nos permite generar contraseñas complejas y seguras a través de diversos algoritmos criptográficos.

Si no lo tienes instalado puedes agregar el paquete whois tal que así:

sudo apt-get update
sudo apt-get install whois

Una vez tengamos whois instalado ya podemos hacer uso de mkpasswd. Veamos que opciones tiene:

  • -m: Nos permite elegir el método con el que encriptaremos: entre des, md5,sha-256 y sha-512.
  • -5: Es una forma abreviada para seleccionar el método md5, sería equivalente a usar -m md5.
  • -S: Una cadena que usar como salt para el password.
  • -R: Definimos el número de rondas que se usarán, si son aplicables.
  • -P: Lee la contraseña del descriptor de fichero que le pasemos en lugar de hacerlo de /dev/tty
  • -s: Método acortado equivalente a -P 0

Por ejemplo:

#usamos el algoritmo sha-256
#pasamos como sal la cadena salamos1
mkpasswd -m sha-256 -S salamos1

#lo mismo pero con md5
mkpasswd -m md5 -S salamos1

Una captura viendo distintas opciones, distintos algoritmos y comprobando también cómo el salt no permite ciertos carácteres:
mkpasswd

Javascript: Obtener el último carácter de una cadena

Ayer veíamos cómo obtener la primera letra de una cadena, hoy vamos a ver cómo obtener la última. Básicamente es lo mismo que en el otro ejemplo: usamos la función charAt(), pero en este caso en vez de un 0 le pasamos la longitud de la cadena restándole el último carácter (obtenemos la longitud a través de la propiedad length de la cadena). Tal que así:

#Un ejemplo donde haremos un alert
#de la última letra de una cadena

var cadena = "abc";
window.alert(cadena.charAt(cadena.length-1));

Javascript: obtener el primer carácter de una cadena.

¿Cómo se obtiene el primer carácter de una cadena con javascript? Pues es muy simple: con la función charAt(). Dicha función recibe como parámetro la posición dentro de la cadena en la que queremos buscar y devuelve el carácter que está en esa posición. Así que para obtener el primer carácter tenemos que pasarle un 0. Tal que así:

var cadena= "cadena";
var fstChar = cadena.charAt(0);

Reparar Sambacry (CVE-2017-7494) en Ubuntu

Tras todo el tema de Wannacry atacando sistemas Windows hace un par de semanas ahora aflora otra vulnerabilidad que afecta al protocolo SMB en Samba, afectando a las versiones 3.5 y posteriores, lanzada en marzo de 2010. El fallo ha sido reportado y descrito por Samba en su sitio oficial como CVE-2017-7494.

Ya se ha reparado el problema, así que si no tienes actualizado Samba es el momento de hacerlo. Las versiones para Ubuntu en las que ya se ha aplicado el parche son las siguientes:

  • 17.04: samba 2:4.5.8+dfsg-0ubuntu0.17.04.2
  • 16.10: samba 2:4.4.5+dfsg-2ubuntu5.6
  • 16.04 LTS: samba 2:4.3.11+dfsg-0ubuntu0.16.04.7
  • 14.04 LTS: samba 2:4.3.11+dfsg-0ubuntu0.14.04.8

Para actualizar Samba y ver qué versión tienes instalada en tu Ubuntu puedes usar los siguientes comandos:

#instalar
$ sudo apt-get update
$ sudo apt-get install samba

#y para comprobar la versión
$ sudo apt-cache show samba

Si por lo que sea no puedes actualizar Samba comprueba que tengas SELinux habilitado, en caso afirmativo ya deberías estar protegido contra la ejecución de código remoto en tu equipo. También puedes poner la opción noexec en las unidades compartidas por Samba para evitar la ejecución de binarios en las mismas.

En la sección [global] del fichero smb.conf también puedes añadir la siguiente línea y luego reinciar el servicio:

nt pipe support = no

Ojo con esto último, puede dar problemas con los permisos para acceder a carpetas a los usuarios de Windows. Por ejemplo, les forzaría a poner la dirección completa del directorio compartido, no bastando sólo con la del directorio raíz.