Ärgerlich ist es nach jedem Urlaub festzustellen, dass man die falsche Uhrzeit eingestellt hatte.
exiftool ist das perfekte (Commandline-) Tool dies zu ändern. Das Tool kann man über http://owl.phy.queensu.ca/~phil/exiftool/ für Linux, Windows und macOS herunterladen.

Ich verwende das Tool um bei allen Fotos in einem Verzeichnis das Aufnahmedatum um x Stunden (im Beispiel 8 Stunden nach vorne) zu verschieben:

$ exiftool "-DateTimeOriginal+=0:0:0 8:0:0" *
$ exiftool "-ModifyDate+=0:0:0 8:0:0" *
$ exiftool "-CreateDate+=0:0:0 8:0:0" *

ACHTUNG: bei jeder Anwendung des Kommandos wird standardmäßig eine Kopie des Originals abgelegt (mit geänderter Dateiendung).

Ist nur ein Promilleanteil an Features, das das exiftool kann und die es noch zu erforschen gilt.

Das Modul Net::ssh::perl ist unter RedHat nicht in den Repositories enthalten. Module können mit cpanm nachgeladen werden.
Bei der Installation von Net::ssh::perl traten zusätzlich noch folgende Probleme auf:
Es war kein Compiler installiert:

# yum install gcc

Bei der Installation des notwendigen Moduls Math::gmp kommt die Fehlermeldung

…
GMP.xs:4:17: error: gmp.h: No such file or directory
…

Dafür muss das RedHat-Paket gmp-devel installiert sein:

# yum install gmp-devel

Danach konnte das Perl-Modul Net::ssh::perl problemlos installiert und verwendet werden:

cpanm Net::SSH::Perl

In den Repositories von RedHat werden nicht alle Perl-Module geführt. Man kann sie daher nicht über yum install … nachinstallieren.
Beispiele für installierbare Module:

# yum search module
Loaded plugins: product-id, rhnplugin, security, subscription-manager
This system is not registered with RHN Classic or RHN Satellite.
You can use rhn_register to register.
RHN Satellite or RHN Classic support will be disabled.
rhel-6-server-rpms                             | 3.7 kB     00:00
rhel-6-server-rpms/primary_db                  |  32 MB     00:02
rhel-server-dts-6-rpms                         | 2.9 kB     00:00
rhel-server-dts2-6-rpms                        | 2.9 kB     00:00
====================== N/S Matched: perl ========================
…
net-snmp-perl.x86_64 : The perl NET-SNMP module and the mib2c tool
perl-Archive-Tar.x86_64 : A module for Perl manipulation of .tar files
perl-Authen-SASL.noarch : SASL Authentication framework for Perl
perl-CPAN.x86_64 : Query, download and build perl modules from CPAN sites
perl-Cache-Memcached.noarch : Perl client for memcached
perl-Carp-Clan.noarch : Perl module to print improved warning messages
perl-Class-MethodMaker.x86_64 : Perl module for creating generic object-oriented methods
perl-Compress-Zlib.x86_64 : A module providing Perl interfaces to the zlib compression library
perl-Config-General.noarch : Generic configuration module for Perl
perl-Crypt-OpenSSL-Bignum.x86_64 : Perl interface to OpenSSL for Bignum
perl-Crypt-OpenSSL-RSA.x86_64 : Perl interface to OpenSSL for RSA
perl-Crypt-OpenSSL-Random.x86_64 : Perl interface to OpenSSL for Random
…

Module können außerdem aus dem CPAN geladen werden. Eine einfachere Möglichkeit als über die cpan-shell ist der Einsatz von cpanm.
cpanm herunterladen:

# curl -L http://cpanmin.us | perl - --sudo App::cpanminus

Danach einfach das erforderliche Modul laden, konfigurieren und kompilieren in einem Schritt:

# cpanm Net::Appliance::Session
--> Working on Net::Appliance::Session
Fetching http://www.cpan.org/authors/id/O/OL/OLIVER/Net-Appliance-Session-4.200000.tar.gz ... OK
Configuring Net-Appliance-Session-4.200000 ... OK
==> Found dependencies: Try::Tiny, Term::ReadPassword, Moo, Moo::Role, Sub::Quote, MooX::Types::MooseLike::Base, IO::Prompt::Tiny, Text::Glob, Net::CLI::Interact
--> Working on Try::Tiny
Fetching http://www.cpan.org/authors/id/D/DO/DOY/Try-Tiny-0.22.tar.gz ... OK
Configuring Try-Tiny-0.22 ... OK
Building and testing Try-Tiny-0.22 ... OK
Successfully installed Try-Tiny-0.22
--> Working on Term::ReadPassword
Fetching http://www.cpan.org/authors/id/P/PH/PHOENIX/Term-ReadPassword-0.11.tar.gz ... OK
Configuring Term-ReadPassword-0.11 ... OK
Building and testing Term-ReadPassword-0.11 ...

# (Don't worry - you're not changing any real password!)
Enter your (fake) new password:
Enter it again:
# Your (fake) password is now changed.
#
# Time passes... you come back the next day... and you see...
password:
# Access granted.
OK
Successfully installed Term-ReadPassword-0.11
--> Working on Moo
Fetching http://www.cpan.org/authors/id/H/HA/HAARG/Moo-2.000001.tar.gz ... OK
Configuring Moo-2.000001 ... OK
==> Found dependencies: Role::Tiny, Test::Fatal, Module::Runtime, Class::Method::Modifiers, Devel::GlobalDestruction
--> Working on Role::Tiny
Fetching http://www.cpan.org/authors/id/H/HA/HAARG/Role-Tiny-2.000001.tar.gz ... OK
Configuring Role-Tiny-2.000001 ... OK
==> Found dependencies: Test::Fatal
--> Working on Test::Fatal
Fetching http://www.cpan.org/authors/id/R/RJ/RJBS/Test-Fatal-0.014.tar.gz ... OK
Configuring Test-Fatal-0.014 ... OK
Building and testing Test-Fatal-0.014 ... OK
Successfully installed Test-Fatal-0.014
Building and testing Role-Tiny-2.000001 ... OK
Successfully installed Role-Tiny-2.000001
--> Working on Module::Runtime
Fetching http://www.cpan.org/authors/id/Z/ZE/ZEFRAM/Module-Runtime-0.014.tar.gz ... OK
==> Found dependencies: Module::Build
--> Working on Module::Build
Fetching http://www.cpan.org/authors/id/L/LE/LEONT/Module-Build-0.4211.tar.gz ... OK
==> Found dependencies: Module::Metadata, version, CPAN::Meta, Perl::OSType
--> Working on Module::Metadata
Fetching http://www.cpan.org/authors/id/E/ET/ETHER/Module-Metadata-1.000027.tar.gz ... OK
Configuring Module-Metadata-1.000027 ... OK
==> Found dependencies: version
--> Working on version
Fetching http://www.cpan.org/authors/id/J/JP/JPEACOCK/version-0.9912.tar.gz ... OK
Configuring version-0.9912 ... OK
Building version-0.9912 ... OK
Successfully installed version-0.9912 (upgraded from 0.77)
Building Module-Metadata-1.000027 ... OK
Successfully installed Module-Metadata-1.000027
--> Working on CPAN::Meta
Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/CPAN-Meta-2.150001.tar.gz ... OK
Configuring CPAN-Meta-2.150001 ... OK
==> Found dependencies: Parse::CPAN::Meta
--> Working on Parse::CPAN::Meta
Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Parse-CPAN-Meta-1.4414.tar.gz ... OK
Configuring Parse-CPAN-Meta-1.4414 ... OK
==> Found dependencies: CPAN::Meta::YAML
--> Working on CPAN::Meta::YAML
Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/CPAN-Meta-YAML-0.014.tar.gz ... OK
Configuring CPAN-Meta-YAML-0.014 ... OK
Building CPAN-Meta-YAML-0.014 ... OK
Successfully installed CPAN-Meta-YAML-0.014 (upgraded from 0.008)
Building Parse-CPAN-Meta-1.4414 ... OK
Successfully installed Parse-CPAN-Meta-1.4414 (upgraded from 1.4405)
Building CPAN-Meta-2.150001 ... OK
Successfully installed CPAN-Meta-2.150001 (upgraded from 2.120351)
--> Working on Perl::OSType
Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Perl-OSType-1.008.tar.gz ... OK
Configuring Perl-OSType-1.008 ... OK
Building Perl-OSType-1.008 ... OK
Successfully installed Perl-OSType-1.008
Configuring Module-Build-0.4211 ... OK
Building Module-Build-0.4211 ... OK
Successfully installed Module-Build-0.4211 (upgraded from 0.35)
Configuring Module-Runtime-0.014 ... OK
Building and testing Module-Runtime-0.014 ... OK
Successfully installed Module-Runtime-0.014
--> Working on Class::Method::Modifiers
Fetching http://www.cpan.org/authors/id/E/ET/ETHER/Class-Method-Modifiers-2.11.tar.gz ... OK
Configuring Class-Method-Modifiers-2.11 ... OK
==> Found dependencies: Test::Requires
--> Working on Test::Requires
Fetching http://www.cpan.org/authors/id/T/TO/TOKUHIROM/Test-Requires-0.08.tar.gz ... OK
Configuring Test-Requires-0.08 ... OK
Building and testing Test-Requires-0.08 ... OK
Successfully installed Test-Requires-0.08
Building and testing Class-Method-Modifiers-2.11 ... OK
Successfully installed Class-Method-Modifiers-2.11
--> Working on Devel::GlobalDestruction
Fetching http://www.cpan.org/authors/id/H/HA/HAARG/Devel-GlobalDestruction-0.13.tar.gz ... OK
Configuring Devel-GlobalDestruction-0.13 ... OK
==> Found dependencies: Sub::Exporter::Progressive, Devel::GlobalDestruction::XS
--> Working on Sub::Exporter::Progressive
Fetching http://www.cpan.org/authors/id/F/FR/FREW/Sub-Exporter-Progressive-0.001011.tar.gz ... OK
Configuring Sub-Exporter-Progressive-0.001011 ... OK
Building and testing Sub-Exporter-Progressive-0.001011 ... OK
Successfully installed Sub-Exporter-Progressive-0.001011
--> Working on Devel::GlobalDestruction::XS
Fetching http://www.cpan.org/authors/id/R/RI/RIBASUSHI/Devel-GlobalDestruction-XS-0.01.tar.gz ... OK
Configuring Devel-GlobalDestruction-XS-0.01 ... OK
Building and testing Devel-GlobalDestruction-XS-0.01 ... OK
Successfully installed Devel-GlobalDestruction-XS-0.01
Building and testing Devel-GlobalDestruction-0.13 ... OK
Successfully installed Devel-GlobalDestruction-0.13
Building and testing Moo-2.000001 ... OK
Successfully installed Moo-2.000001
--> Working on MooX::Types::MooseLike::Base
Fetching http://www.cpan.org/authors/id/M/MA/MATEU/MooX-Types-MooseLike-0.28.tar.gz ... OK
Configuring MooX::Types::MooseLike-0.28 ... OK
Building and testing MooX::Types::MooseLike-0.28 ... OK
Successfully installed MooX::Types::MooseLike-0.28
--> Working on IO::Prompt::Tiny
Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/IO-Prompt-Tiny-0.003.tar.gz ... OK
Configuring IO-Prompt-Tiny-0.003 ... OK
==> Found dependencies: Capture::Tiny
--> Working on Capture::Tiny
Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Capture-Tiny-0.28.tar.gz ... OK
Configuring Capture-Tiny-0.28 ... OK
Building and testing Capture-Tiny-0.28 ... OK
Successfully installed Capture-Tiny-0.28
Building and testing IO-Prompt-Tiny-0.003 ... OK
Successfully installed IO-Prompt-Tiny-0.003
--> Working on Text::Glob
Fetching http://www.cpan.org/authors/id/R/RC/RCLAMP/Text-Glob-0.09.tar.gz ... OK
Configuring Text-Glob-0.09 ... OK
Building and testing Text-Glob-0.09 ... OK
Successfully installed Text-Glob-0.09
--> Working on Net::CLI::Interact
Fetching http://www.cpan.org/authors/id/O/OL/OLIVER/Net-CLI-Interact-2.200002.tar.gz ... OK
Configuring Net-CLI-Interact-2.200002 ... OK
==> Found dependencies: IPC::Run, Log::Dispatch::Configurator::Any, Log::Dispatch::Config, Class::Load, Class::Mix, IO::Pty, Path::Class
--> Working on IPC::Run
Fetching http://www.cpan.org/authors/id/T/TO/TODDR/IPC-Run-0.94.tar.gz ... OK
Configuring IPC-Run-0.94 ... OK
Building and testing IPC-Run-0.94 ... OK
Successfully installed IPC-Run-0.94
--> Working on Log::Dispatch::Configurator::Any
Fetching http://www.cpan.org/authors/id/O/OL/OLIVER/Log-Dispatch-Configurator-Any-1.122640.tar.gz ... OK
Configuring Log-Dispatch-Configurator-Any-1.122640 ... OK
==> Found dependencies: Log::Dispatch::Configurator, Log::Dispatch, Log::Dispatch::Config, Config::Any, Config::Tiny
--> Working on Log::Dispatch::Configurator
Fetching http://www.cpan.org/authors/id/M/MI/MIYAGAWA/Log-Dispatch-Config-1.04.tar.gz ... OK
Configuring Log-Dispatch-Config-1.04 ... OK
==> Found dependencies: IO::Scalar, AppConfig, Log::Dispatch
--> Working on IO::Scalar
Fetching http://www.cpan.org/authors/id/D/DS/DSKOLL/IO-stringy-2.111.tar.gz ... OK
Configuring IO-stringy-2.111 ... OK
Building and testing IO-stringy-2.111 ... OK
Successfully installed IO-stringy-2.111
--> Working on AppConfig
Fetching http://www.cpan.org/authors/id/N/NE/NEILB/AppConfig-1.71.tar.gz ... OK
Configuring AppConfig-1.71 ... OK
==> Found dependencies: Test::Pod
--> Working on Test::Pod
Fetching http://www.cpan.org/authors/id/D/DW/DWHEELER/Test-Pod-1.49.tar.gz ... OK
Configuring Test-Pod-1.49 ... OK
Building and testing Test-Pod-1.49 ... OK
Successfully installed Test-Pod-1.49
Building and testing AppConfig-1.71 ... OK
Successfully installed AppConfig-1.71
--> Working on Log::Dispatch
Fetching http://www.cpan.org/authors/id/D/DR/DROLSKY/Log-Dispatch-2.44.tar.gz ... OK
==> Found dependencies: Dist::CheckConflicts
--> Working on Dist::CheckConflicts
Fetching http://www.cpan.org/authors/id/D/DO/DOY/Dist-CheckConflicts-0.11.tar.gz ... OK
Configuring Dist-CheckConflicts-0.11 ... OK
Building Dist-CheckConflicts-0.11 ... OK
Successfully installed Dist-CheckConflicts-0.11
Configuring Log-Dispatch-2.44 ... OK
==> Found dependencies: Sys::Syslog, Params::Validate
--> Working on Sys::Syslog
Fetching http://www.cpan.org/authors/id/S/SA/SAPER/Sys-Syslog-0.33.tar.gz ... OK
Configuring Sys-Syslog-0.33 ... OK
Building and testing Sys-Syslog-0.33 ... OK
Successfully installed Sys-Syslog-0.33 (upgraded from 0.27)
--> Working on Params::Validate
Fetching http://www.cpan.org/authors/id/D/DR/DROLSKY/Params-Validate-1.18.tar.gz ... OK
Configuring Params-Validate-1.18 ... OK
==> Found dependencies: Module::Implementation
--> Working on Module::Implementation
Fetching http://www.cpan.org/authors/id/D/DR/DROLSKY/Module-Implementation-0.09.tar.gz ... OK
Configuring Module-Implementation-0.09 ... OK
Building and testing Module-Implementation-0.09 ... OK
Successfully installed Module-Implementation-0.09
Building and testing Params-Validate-1.18 ... OK
Successfully installed Params-Validate-1.18
Building and testing Log-Dispatch-2.44 ... OK
Successfully installed Log-Dispatch-2.44
Building and testing Log-Dispatch-Config-1.04 ... OK
Successfully installed Log-Dispatch-Config-1.04
--> Working on Config::Any
Fetching http://www.cpan.org/authors/id/B/BR/BRICAS/Config-Any-0.26.tar.gz ... OK
Configuring Config-Any-0.26 ... OK
Building and testing Config-Any-0.26 ... OK
Successfully installed Config-Any-0.26
--> Working on Config::Tiny
Fetching http://www.cpan.org/authors/id/R/RS/RSAVAGE/Config-Tiny-2.22.tgz ... OK
Configuring Config-Tiny-2.22 ... OK
Building and testing Config-Tiny-2.22 ... OK
Successfully installed Config-Tiny-2.22
Building and testing Log-Dispatch-Configurator-Any-1.122640 ... OK
Successfully installed Log-Dispatch-Configurator-Any-1.122640
--> Working on Class::Load
Fetching http://www.cpan.org/authors/id/E/ET/ETHER/Class-Load-0.22.tar.gz ... OK
==> Found dependencies: Module::Build::Tiny
--> Working on Module::Build::Tiny
Fetching http://www.cpan.org/authors/id/L/LE/LEONT/Module-Build-Tiny-0.039.tar.gz ... OK
==> Found dependencies: TAP::Harness::Env, ExtUtils::Helpers, ExtUtils::InstallPaths, ExtUtils::Config
--> Working on TAP::Harness::Env
Fetching http://www.cpan.org/authors/id/L/LE/LEONT/Test-Harness-3.35.tar.gz ... OK
Configuring Test-Harness-3.35 ... OK
Building Test-Harness-3.35 ... OK
Successfully installed Test-Harness-3.35
--> Working on ExtUtils::Helpers
Fetching http://www.cpan.org/authors/id/L/LE/LEONT/ExtUtils-Helpers-0.022.tar.gz ... OK
Configuring ExtUtils-Helpers-0.022 ... OK
Building ExtUtils-Helpers-0.022 ... OK
Successfully installed ExtUtils-Helpers-0.022
--> Working on ExtUtils::InstallPaths
Fetching http://www.cpan.org/authors/id/L/LE/LEONT/ExtUtils-InstallPaths-0.011.tar.gz ... OK
Configuring ExtUtils-InstallPaths-0.011 ... OK
==> Found dependencies: ExtUtils::Config
--> Working on ExtUtils::Config
Fetching http://www.cpan.org/authors/id/L/LE/LEONT/ExtUtils-Config-0.008.tar.gz ... OK
Configuring ExtUtils-Config-0.008 ... OK
Building ExtUtils-Config-0.008 ... OK
Successfully installed ExtUtils-Config-0.008
Building ExtUtils-InstallPaths-0.011 ... OK
Successfully installed ExtUtils-InstallPaths-0.011
Configuring Module-Build-Tiny-0.039 ... OK
Building Module-Build-Tiny-0.039 ... OK
Successfully installed Module-Build-Tiny-0.039
Configuring Class-Load-0.22 ... OK
==> Found dependencies: Package::Stash, Data::OptList, namespace::clean
--> Working on Package::Stash
Fetching http://www.cpan.org/authors/id/D/DO/DOY/Package-Stash-0.37.tar.gz ... OK
Configuring Package-Stash-0.37 ... OK
==> Found dependencies: Package::Stash::XS
--> Working on Package::Stash::XS
Fetching http://www.cpan.org/authors/id/D/DO/DOY/Package-Stash-XS-0.28.tar.gz ... OK
Configuring Package-Stash-XS-0.28 ... OK
Building and testing Package-Stash-XS-0.28 ... OK
Successfully installed Package-Stash-XS-0.28
Building and testing Package-Stash-0.37 ... OK
Successfully installed Package-Stash-0.37
--> Working on Data::OptList
Fetching http://www.cpan.org/authors/id/R/RJ/RJBS/Data-OptList-0.109.tar.gz ... OK
Configuring Data-OptList-0.109 ... OK
==> Found dependencies: Params::Util, Sub::Install
--> Working on Params::Util
Fetching http://www.cpan.org/authors/id/A/AD/ADAMK/Params-Util-1.07.tar.gz ... OK
Configuring Params-Util-1.07 ... OK
Building and testing Params-Util-1.07 ... OK
Successfully installed Params-Util-1.07
--> Working on Sub::Install
Fetching http://www.cpan.org/authors/id/R/RJ/RJBS/Sub-Install-0.928.tar.gz ... OK
Configuring Sub-Install-0.928 ... OK
Building and testing Sub-Install-0.928 ... OK
Successfully installed Sub-Install-0.928
Building and testing Data-OptList-0.109 ... OK
Successfully installed Data-OptList-0.109
--> Working on namespace::clean
Fetching http://www.cpan.org/authors/id/R/RI/RIBASUSHI/namespace-clean-0.25.tar.gz ... OK
Configuring namespace-clean-0.25 ... OK
==> Found dependencies: Sub::Name, Sub::Identify, B::Hooks::EndOfScope
--> Working on Sub::Name
Fetching http://www.cpan.org/authors/id/E/ET/ETHER/Sub-Name-0.14.tar.gz ... OK
Configuring Sub-Name-0.14 ... OK
Building and testing Sub-Name-0.14 ... OK
Successfully installed Sub-Name-0.14
--> Working on Sub::Identify
Fetching http://www.cpan.org/authors/id/R/RG/RGARCIA/Sub-Identify-0.10.tar.gz ... OK
Configuring Sub-Identify-0.10 ... OK
Building and testing Sub-Identify-0.10 ... OK
Successfully installed Sub-Identify-0.10
--> Working on B::Hooks::EndOfScope
Fetching http://www.cpan.org/authors/id/E/ET/ETHER/B-Hooks-EndOfScope-0.14.tar.gz ... OK
Configuring B-Hooks-EndOfScope-0.14 ... OK
==> Found dependencies: Variable::Magic
--> Working on Variable::Magic
Fetching http://www.cpan.org/authors/id/V/VP/VPIT/Variable-Magic-0.57.tar.gz ... OK
Configuring Variable-Magic-0.57 ... OK
Building and testing Variable-Magic-0.57 ... OK
Successfully installed Variable-Magic-0.57
Building and testing B-Hooks-EndOfScope-0.14 ... OK
Successfully installed B-Hooks-EndOfScope-0.14
Building and testing namespace-clean-0.25 ... OK
Successfully installed namespace-clean-0.25
Building and testing Class-Load-0.22 ... OK
Successfully installed Class-Load-0.22
--> Working on Class::Mix
Fetching http://www.cpan.org/authors/id/Z/ZE/ZEFRAM/Class-Mix-0.005.tar.gz ... OK
Configuring Class-Mix-0.005 ... OK
==> Found dependencies: Params::Classify
--> Working on Params::Classify
Fetching http://www.cpan.org/authors/id/Z/ZE/ZEFRAM/Params-Classify-0.013.tar.gz ... OK
Configuring Params-Classify-0.013 ... OK
Building and testing Params-Classify-0.013 ... OK
Successfully installed Params-Classify-0.013
Building and testing Class-Mix-0.005 ... OK
Successfully installed Class-Mix-0.005
--> Working on IO::Pty
Fetching http://www.cpan.org/authors/id/T/TO/TODDR/IO-Tty-1.12.tar.gz ... OK
Configuring IO-Tty-1.12 ... OK
Building and testing IO-Tty-1.12 ... OK
Successfully installed IO-Tty-1.12
--> Working on Path::Class
Fetching http://www.cpan.org/authors/id/K/KW/KWILLIAMS/Path-Class-0.35.tar.gz ... OK
Configuring Path-Class-0.35 ... OK
Building and testing Path-Class-0.35 ... OK
Successfully installed Path-Class-0.35
Building and testing Net-CLI-Interact-2.200002 ... OK
Successfully installed Net-CLI-Interact-2.200002
Building and testing Net-Appliance-Session-4.200000 ... OK
Successfully installed Net-Appliance-Session-4.200000
57 distributions installed