2009-03-29 34 views
10

¿Cómo escribo un archivo por lotes para controlar psftp, pero con un nombre de archivo dinámico? En general, intento convertir un archivo de video y luego subirlo a mi Apple TV. Aquí es lo que tengo, por lo general funciona, pero los comandos no controlo psftp, psftp sólo espera la entrada del usuario:Control de psftp en un archivo por lotes de Windows

echo Convert and Upload to Apple TV file Called %1.mkv 

ffmpeg -i %1.mkv -vcodec mpeg4 -acodec ac3 -ab 384k -sameq -s hd720 -t 60 %1.avi 

psftp [email protected] -pw aaa 
cd downloads/boxee 
put %1.avi 
quit 

Sé que con el psftp bandera -b puede llamar a su propio archivo por lotes, pero Don No sé cómo obtener el argumento% 1. He visto soluciones donde un archivo de texto se redirige a psftp, pero que sufre el mismo problema. Además, preferiría tener solo un archivo, pero tener que llamar a un segundo archivo también estaría bien.

Respuesta

15

que acabó creando un nuevo archivo por lotes desde la principal que entonces me dije psftp de usar:

echo cd downloads/boxee > psftp.bat 
echo put "%1.avi" >> psftp.bat 
echo quit >> psftp.bat 

psftp [email protected] -pw aaa -b psftp.bat 
1

¿Por qué no utilizar el comando FTP integrado que viene con Windows?

tendrá que escribir un script que va a cargar el archivo:

192.168.1.50 abierta
usuario
frontrow aaa
poner archivo.avi
dejar de fumar

luego llame al ftp -s: MyScript

Deberá generar la secuencia de comandos por cada archivo utilizando echo y el >> redirector.

+2

la razón es porque normalmente los puertos FTP no pasivos 20 y 21 no están expuestos a Internet. es mucho más seguro dejar abierto el puerto SSH 22 y luego usar PSFTP para hacer un túnel a través de ese puerto de forma segura. – djangofan

4

especificar comandos A que contiene lotes de archivos

En funcionamiento normal, PSFTP es un programa interactivo que muestra una línea de comando y acepta comandos desde el teclado.

Si necesita realizar tareas automáticas con PSFTP, probablemente prefiera especificar un conjunto de comandos por adelantado y ejecutarlos automáticamente. La opción -b te permite hacer esto. Lo usa con un nombre de archivo que contiene comandos por lotes. Por ejemplo, puede crear un archivo llamado myscript.scr contiene líneas como esta:

cd /home/ftp/users/jeff 
del jam-old.tar.gz 
ren jam.tar.gz jam-old.tar.gz 
put jam.tar.gz 
chmod a+r jam.tar.gz 
quit 

y entonces se podría ejecutar el script escribiendo

psftp [email protected] -b myscript.scr 

crédito a http://the.earth.li/~sgtatham/putty/0.52/htmldoc/Chapter6.html#6.1.3

+0

Esto no responde a la pregunta "¿Cómo puedo escribir un archivo por lotes para controlar psftp, pero con un * nombre de archivo dinámico *?", Claramente el OP sabe sobre la bandera -b – lmiguelmh

2

Todo en uno archivo:

@echo off 
echo Convert and Upload to Apple TV file Called %1.mkv 
ffmpeg -i %1.mkv -vcodec mpeg4 -acodec ac3 -ab 384k -sameq -s hd720 -t 60 %1.avi 
(
echo cd downloads/boxee 
echo put %1.avi 
echo quit 
) | psftp [email protected] -pw aaa -bc 

Si necesitamos el número de puerto preciso:

psftp [email protected] -P 222 -pw aaa -bc 
0

Si todo lo que está haciendo con FTP es la carga de un solo archivo, puede utilizar pscp.

echo Convert and Upload to Apple TV file Called %1.mkv 

ffmpeg -i %1.mkv -vcodec mpeg4 -acodec ac3 -ab 384k -sameq -s hd720 -t 60 %1.avi 
pscp -pw aaa -sftp %1.avi [email protected]:/downloads/boxee 
0

he tenido problemas para ejecutar un simple archivo por lotes/script para tener un usuario final cargar un archivo que acababa editado a un sitio FTP seguro.

uso de este script:

cd /outgoing 
put Examplefile.txt 
# chmod a+r Examplefile.txt 
# ren Examplefile.txt Exam.ted 
# rm Examplefile.txt 
quit 

y ejecutar el comando sftp de PuTTY desde un símbolo del sistema de Windows estándar:

psftp [email protected] -pw password -b testscript.scr 

pude rápida y (lo más importante !!) cargar fácilmente un archivo de la empresa para la que trabajo para una empresa con la que necesitamos hacer negocios. También puede ver que estoy listo para cambiar el nombre del archivo si es necesario (ren) o eliminar un archivo si es necesario (rm). El símbolo de almohadilla (#) establece las líneas como líneas de observación.

Esto me permitió crear un archivo por lotes completo en Windows que el usuario final simplemente podía hacer clic para cargar los archivos a medida que los generaba. Fue MUCHO más simple que usar algunos de los otros "sabores" de sftp que encontré en la 'Red y he usado y confiado en PuTTY durante décadas.

Cuestiones relacionadas