Question

J'ai trois ordinateurs sur mon réseau local,

une course ubuntu ,
une course openSuse et mon serveur exécutant Archlinux .

Je n'ai réussi à ffmpeg pour fonctionner correctement sur mon serveur.

Je voudrais écrire un script qui prétend être un ffmpeg installation sur la machine locale, mais il fait juste en utilisant du serveur ffmpeg .

Exemple:

  

sur le PC openSuse je voudrais appeler:

     

ffmpeg -i file.avi out.flv

     

et obtenir la sortie normale comme on pouvait s'y attendre,
  mais je veux utiliser le ffmpeg sur le ArchLinux.

des conseils quant à la façon j'obtenir ce travail.
(De préférence en Ruby)

EDIT: J'ai étendu cette question Comment afficher les barres de progression d'une commande shell sur ssh

Était-ce utile?

La solution

Je n'ai pas beaucoup de rubis-fu, mais cela semble fonctionner!

Pré-requis,

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

Code (avec commentaires),

#!/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

Et puis je peux courir cela comme si,

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*

Autres conseils

Voici quelques options, plus facile d'abord:

  • Configurer NFS sur votre réseau local, monter tous les disques déportée sur votre serveur, puis exécutez une commande en utilisant les noms ssh montés à distance. Il incombe à l'utilisateur d'utiliser les noms étranges.

  • Configurer NFS, mais analyser les options ffmpeg pour identifier les fichiers d'entrée et de sortie, puis utiliser quelque chose comme le paquet realname (ou un simple script shell) pour convertir les noms premier à chemin absolu, puis à la télécommande noms montés.

  • Ne pas utiliser NFS, mais les options ffmpeg et parse utiliser pour copier les scp fichiers d'entrée et sur les fichiers de sortie arrière.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top