Pregunta

Tengo tres computadoras en mi LAN,

uno corriendo ubuntu , España uno corriendo openSUSE
y mi servidor que ejecuta Archlinux .

Yo sólo las he arreglado para conseguir ffmpeg para trabajar correctamente en el servidor.

Me gustaría escribir un guión que pretende ser un ffmpeg instalación en la máquina local, pero habría importado ser simplemente usando ffmpeg del servidor .

Ejemplo:

  

openSUSE en el pc me gustaría llamar a:

     

ffmpeg -i file.avi out.flv

     

y luego la salida normal, como cabría esperar,
  pero yo quiero que use el ffmpeg en el archlinux.

ningún consejo en cuanto a cómo iba a conseguir que esto funcione.
(Preferiblemente en Ruby)

EDIT: He ampliado esta pregunta a ¿Cómo puedo mostrar las barras de progreso de un comando shell a través de ssh

¿Fue útil?

Solución

No tengo una gran cantidad de rubí-fu, pero esto parece que funciona!

Requisitos previos,

sudo yum install rubygems
sudo gem install net-ssh net-sftp highline echoe

Código (con comentarios),

#!/usr/bin/env ruby

require 'rubygems'
require 'net/ssh'
require 'net/sftp'
require 'highline/import'

file = ARGV[ 0 ]                  # filename from command line
prod = file + "-new"              # product filename (call it <file>-new)
rpath = "/tmp"                    # remote computer operating directory
rfile = "#{rpath}/#{file}"        # remote filename
rprod = "#{rpath}/#{prod}"        # remote product
cmd  = "mv #{rfile} #{rprod}"     # remote command, constructed

host = "-YOUR REMOTE HOST-"
user = "-YOUR REMOTE USERNAME-"
pass = ask("Password: ") { |q| q.echo = false }  # password from stdin

Net::SSH.start(host, user, :password => pass) do |ssh|
        ssh.sftp.connect do |sftp|
                # upload local 'file' to remote 'rfile'
                sftp.upload!(file, rfile)

                # run remote command 'cmd' to produce 'rprod'
                ssh.exec!(cmd)

                # download remote 'rprod' to local 'prod'
                sftp.download!(rprod, prod)
        end
end

Y entonces puedo ejecutar este como tal,

dylan@home ~/tmp/ruby) ls
bar  remotefoo.rb*
dylan@home ~/tmp/ruby) ./remotefoo.rb bar
Password: 
dylan@home ~/tmp/ruby) ls
bar  bar-new  remotefoo.rb*

Otros consejos

A continuación se presentan algunas opciones, más fácil primero:

  • Configurar NFS en su LAN, remoted montaje de todos los discos en su servidor, a continuación, ejecutar un comando ssh utilizando los nombres de montaje remoto. La responsabilidad recae sobre el usuario a utilizar los nombres extraños.

  • Configurar NFS, pero analizar las opciones de ffmpeg para identificar los archivos de entrada y salida, a continuación, utilizar algo así como el realname paquete (o un simple script de shell) para convertir los nombres primero en rutas absolutas, a continuación, a la distancia montado nombres.

  • No utilice NFS, pero analizar las opciones de ffmpeg y utilizar scp para copiar archivos de la entrada de una y los archivos de salida trasera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top