Foros del Web » Administración de Sistemas » Unix / Linux »

caracter extraño al subir un fichero de Windows a Linux

Estas en el tema de caracter extraño al subir un fichero de Windows a Linux en el foro de Unix / Linux en Foros del Web. Hola a todos. Tengo el siguiente problema: Tengo un programa implementado en java que lo que hace es subir un fichero por SFTP a una ...
  #1 (permalink)  
Antiguo 11/10/2007, 11:05
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 8 meses
Puntos: 7
Sonrisa caracter extraño al subir un fichero de Windows a Linux

Hola a todos. Tengo el siguiente problema:

Tengo un programa implementado en java que lo que hace es subir un fichero por SFTP a una maquina linux y luego lanza su ejecución (todo esto como veis de forma remota).

La cuestión es que si subo un fichero de una máquina Windows a una máquina linux (desde mi programa en java) me salen el dichoso caracter "M" al final de cada linea del fichero que he subido a la máquina linux.

Y claro, cuando se ejecuta el código script que contiene dicho fichero pues tengo problemas ya que si tiene cosas como:

echo "hola" > $HOME/fichero.txt

El fichero que se me crea con el contenido "hola" se llama "fichero.txt?" y no "fichero.txt". Ademas es curioso (por lo menos para mi) ya que convierte las "M" en "?" en este caso.


Hay alguna solución para esto??


Saludos y gracias de antemano.
  #2 (permalink)  
Antiguo 11/10/2007, 17:00
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 3 meses
Puntos: 29
Re: caracter extraño al subir un fichero de Windows a Linux

Pues relei tu post varias veces pero no veo que transforme las M en interrogaciones, lo que entendí es que al final del archivo les pone una ? pero no veo nada de conmutacion de M por ?.

¿Será que entendí mal?

Saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
  #3 (permalink)  
Antiguo 14/10/2007, 16:33
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 8 meses
Puntos: 7
Re: caracter extraño al subir un fichero de Windows a Linux

Gracias por responder.

La cosa está en que segun la forma en la que subas un fichero de una maquina windows a una linux te añade al final de cada linea del archivo el caracter M.

Despues de hablarlo con algun amigo me ha dicho que es porque el caracter final de linea es diferente en windows (/n) que en linux (/r/n). Por este motivo sale el caracter M al final de cada linea.

Yo subia los archivos mediante el comando "scp". Me han dicho que si lo subes como archivo ascci no pasaría el problema que me pasa pero nose que parametros habría que pasarle entonces al comando scp para que lo hiciese asi.


Nose si ahora me he explicado mejor?
  #4 (permalink)  
Antiguo 14/10/2007, 20:41
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 3 meses
Puntos: 29
Re: caracter extraño al subir un fichero de Windows a Linux

¿Bueno aparte de subirlos por scp los subes por otro protocolo como ftp? Solamente para probar qué es lo que está pasando.

Aparte de esto cuando te logueas por scp prueba a escribir "ascii" así te subirá los archivos. Encontré un texto realmente interesante que seguro te quitará muchas dudas de la cabeza, ahí hablan de ftp pero en el caso de scp los comandos suelen ser iguales o si tienes dudas cuando te loguees y te aparezca el prompt "scp>" escribe help y te aparecerán los comandos disponibles.

http://www.websiterepairguy.com/articles/os/crlf.html

Saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
  #5 (permalink)  
Antiguo 16/10/2007, 03:15
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 8 meses
Puntos: 7
Re: caracter extraño al subir un fichero de Windows a Linux

Te comento:

Utilizo una API de Java que implementa varias funciones para establecer una conexión SSH y tambien para subir ficheros mediante SFTP. Es decir, que esa parte no la he programado yo. Solo uso las funciones que me proporciona para ello.

Mirando como esta implementado la función tiene una linea que pone:

String command="scp -p -t "+rfile;

siendo "rfile" el fichero que quiero subir.

Lo que he hecho (nose si será lo mas adecuado) es que hay un bucle donde lo que hace es ir leyendo el fichero y almacenandolo en un buffer y luego lo envia. Ejemplo:

while(true)
{
int len=fis.read(buf, 0, buf.length);
if(len<=0) break;
out.write(buf, 0, len); //out.flush();

}

Antes del out.write lo que he puesto es lo siguiente:

for(int itr=0;itr<len;itr++) if(buf[itr]=='\r') buf[itr]=' ';

De esta manera sustituto el caracter \r por un blanco. De momento me esta funcionando bien en linux pero nose si haciendo eso si quiero subir un fichero de una máquina windows a otra windows no tendría problemas..



Saludos.


PD: Muy bueno el link que me has puesto.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:35.