martes, 20 de noviembre de 2018

Acceder a recursos de una red windows desde Ubuntu con Samba. Mostrar en Nautilus (1)

Para realiar esta entrada he tomado de ayuda este link del Taller del Bit al que agradezco mucho. Veamos los pasos a seguir

0. Crear un usuario en Linux y assignarle un password

sudo useradd ximodante

sudo passwd ximodante

1. Crear un usuario de samba (que ya debe de estar creado en Ubuntu previamente. En este caso ximodante)

sudo smbpasswd -a ximodante

2. En principio, dicho usuario tendría que estar en el dominio de windows, por tanto hay que proporcionarle la misma contraseña que windows. Para ello :

sudo smbpasswd ximodante

donde nos pide una contraseña nueva y que la confirmemos

2.1 NUEVO 2020-12-11: Tenermos que buscar el workgroup. Parece ser que ahora el wotkgroup es el dominio, por tanto, desde linux, para buscar el dominio hacemos:

nslookup IP_SERVIDOR

Y nos devuelve

XXX.XXX.168.192.in-addr.arpa name = myserver.corporacion.grupo.

observamos que la IP la ha dado en orden inverso, y que el doiminio es corporacion.grupo, pero parece ser que el WORKGROUP es la primera parte del dominio, o sea "corporacion"

3. Queremos ver los recursos compartidos de un servidor windows. Supongamos que en windows tenemos el workgroup "CORPORACION". Para ver los recursos compartidos de un servidor (que idenificamos con su IP) que puede acceder el usuario "ximodante" tecleamos (parece ser que pasa a mayúsculas el dominio!)

smbclient -L IP_Servidor -U CORPORACION/ximodante

y nos pide la contraseña de dicho usuario y a continuación nos muestra los recursos compartidos

4. Si queremos montar un disco remoto en nuestro ordenador, primeramente tenemos que crear un punto directorio que servirá de punto de montaje, por ejemplo "/mnt/disco_remoto_c". En este caso debemos tener permisos de superusuario



sudo mkdir /mnt/disco_remoto_c

------Esto que viene a continuacion YA NO FUNCIONA !!!!!-------

A continuación realizamos el montaje

sudo mount -o username=ximodante //IP_Servidor/c$ /mnt/disco_remoto_c

Y nos pide la contraseña del usuario en el equipo remoto, a la que haya que facilitar. Si entramos en el "nautilus" al directorio mnt, podemos ver que dicha carpeta nos accede al recurso compartido del servidor remoto en Windows.

5. Si por algún motivo, se cambia la contraseña en el entorno Windows, debemos de cambiar la contraseña del mismo usuario de samba. Pero también se puede volver a ejecutar el comando anterior

sudo mount -o username=ximodante //IP_Servidor/c$ /mnt/disco_remoto_c

y proporcionarle la contraseña del usuario en el entorno del servidor remoto Windows cuando nos la pida.


también se puede montar un directorio

sudo mount -o username=ximodante //IP_Servidor/c$/directorio /mnt/disco_remoto_c

6. Si queremos que en "Nautilus" aparezca en los marcadores de la izquierda (panel de navegación), basta que entremos en dicha carpeta por ejemplo en "/mnt/disco_remoto_c" y una vez dentro, le damos a la secuencia Crtl-d y nos aparece en el panel de navegación a la izquierda

7. Si queremos desmontar el punto de montaje hacemos

sudo umount /mnt/disco_remoto_c

8. Según Jim Fell se puede montar así, y en mi caso va en servidores que se niegan a ser conectados con Samba

sudo mount -t cifs -o "domain=CORPORACION,username=myuser,password=mypassword,sec=ntlm,vers=1.0" //192.168.x.x/c$ /mnt/disco_remoto_c

OJO; No dejar espacios en las comas!!!!!


8. Si se quiere utilizar la contraseña de root en el script como dice Jesse Webb y teniendo cuidado con la seguridad de las contraseñas

echo 'myPassword' | sudo -S mount -t cifs -o "domain=CORPORACION,username=myuser,password=mypassword,sec=ntlm,vers=1.0" //192.168.x.x/c$ /mnt/disco_remoto_c

PROBLEMA GORDO

Parece ser que ¡¡¡¡¡ solo tengo acceso a solo lectura !!!

Ahora me instalo el konqueror 

y si le pongo a la direccion de búsqueda:

smb://miusuario:mipassword@192.168.xxx.xxx/carpeta 

ya puedo acceder a lectura y escritura !!!


Posible solución: Acceder con "sudo"  por ejemplo "sudo gedit nombre_fichero.text"


lunes, 5 de noviembre de 2018

Crear jar ejecutable con Maven que incluya recursos. Los jars en librerias a parte (2)

0. Introducción

Ya existe un post anterior que cubre este tema. Pero creo conveniente crear uno mas simple y actualizado a java 10 (tal vez 11).

Cuando tenemos recursos en la carpeta src/main/resources como por ejemplo el famoso fichero de definición de entidades JPA "persistence.xml"  , y le damos FileExport as Java Runnable, no recoge bien la localización de los ficheros de recursos.

Parea ello optamos por la solución de Crunchify adaptándola a nuesto proyecto.

Lo que nos insteresa es el código que aparece después de definir las dependencias (<dependencies>) del código del fichero pom.xml

Hay que destacar las siguientes versiones para que compatibilicen con Java 10

-Java : versión 10 en ${java.version} definida en <properties> y dispuesta en <source> y <target> del maven-compliler-plugin
-maven-compiler-plugin: versión 3.8.0
-maven-resources-plugin: versión 3.1.0
-maven-dependency-plugin: versión 3.1.1
-maven-jar-plugin: versión 3.1.1

También hay que tener en cuenta que

- Se genera la carpeta MiCarpeta que recibe el resultado del build. Se define en mave-resources-plugin en <outputDirectory>

- Se genera un jar llamado MiJar que se define en <finalName> del maven-plugin-jar donde se le indica también la carpeta: <finalName>MiCarpeta/MiJar</finalName>

-Se genera la carpeta lib dentro de MiCarpeta. Se define en maven-dependency-plugin en <outputDirectory>

- Hay que indicar el nombre completo de la clase a ejecutar y por tanto debe de tener un "main". Se indica en maven-jar-plugin en <mainClass>


  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
<project>
  <!-- modelVersion, groupID.. -->
  <properties>
    <!-- otras propiedades -->
    <java.version>10</java.version>
  </properties>
  
  <dependencies>
    <dependency>
        <!-- ....... -->
    </dependency>
    <!-- mas dependencias -->
  </dependencies>
  
  
  <!-- COMPILER PLUGIN -->
  <!-- Esta si que va bien  http://crunchify.com/how-to-create-build-java-project-including-all-dependencies-using-maven-maven-resources-maven-dependency-maven-jar-plugin-tutorial/
  -->
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
          <configuration>
            <!-- release>10</release -->
            <source>${java.version}</source>
            <target>${java.version}</target>
            <showWarnings>true</showWarnings>
            <showDeprecation>true</showDeprecation>
          </configuration>
          
        </plugin>
      </plugins>
    </pluginManagement>
 
    <plugins>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.1.0</version>
        <executions>
          <execution>
            <id>copy-resources</id>
            <phase>validate</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/MiCarpeta</outputDirectory>
              <resources>
                <resource>
                  <directory>resources</directory>
                  <filtering>true</filtering>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>
 
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.1.1</version>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/MiCarpeta/lib</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>false</overWriteSnapshots>
              <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
          </execution>
        </executions>
      </plugin>
   
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.1.1</version>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <classpathPrefix>lib/</classpathPrefix>
              <mainClass>ximodante.orve.ORVETest</mainClass>
            </manifest>
            <manifestEntries>
              <Class-Path>.</Class-Path>
            </manifestEntries>
          </archive>
 
          <finalName>MiCarpeta/MiJar</finalName>
        </configuration>
      </plugin>
    </plugins>
  
  </build>
  
</project>


Para obtener el jar hacemos click derecho sobre el proyecto- Run AS- 4 Maven Build y seleccionamos clean install en el apartado goals como se indica en la imagen.




Ahora solo queda copiar la carpeta MiCarpeta (que está dentro de target)  a un equipo que tenga instalada una versión reciente de java y a funcionar.