mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-25 15:37:56 +00:00
parallel: Test for bug #61894: Pack ssh code in eval protection.
This commit is contained in:
parent
5b325c60ba
commit
8e36c00344
|
@ -4,6 +4,8 @@
|
||||||
|
|
||||||
Quote of the month:
|
Quote of the month:
|
||||||
|
|
||||||
|
It's amazing how fast you can get with bash pipelines and GNU Parallel.
|
||||||
|
-- Eric Pauley @EricPauley_
|
||||||
|
|
||||||
GNU parallel すごいな、シェルスクリプトを make -jX みたいにして並列
|
GNU parallel すごいな、シェルスクリプトを make -jX みたいにして並列
|
||||||
に走らせたいときに超便利
|
に走らせたいときに超便利
|
||||||
|
@ -18,13 +20,10 @@ Quote of the month:
|
||||||
haberlo conocido antes :)
|
haberlo conocido antes :)
|
||||||
-- Juan Sierra Pons @juasiepo
|
-- Juan Sierra Pons @juasiepo
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
If I could only keep 5 GNU utils, parallel would make it to the list
|
If I could only keep 5 GNU utils, parallel would make it to the list
|
||||||
:)
|
:)
|
||||||
-- 5heikki@reddit
|
-- 5heikki@reddit
|
||||||
|
|
||||||
|
|
||||||
Gnu Parallel: installed in every computer i have access to.
|
Gnu Parallel: installed in every computer i have access to.
|
||||||
-- raffaele messuti @atomotic@twitter
|
-- raffaele messuti @atomotic@twitter
|
||||||
|
|
||||||
|
@ -34,7 +33,7 @@ Quote of the month:
|
||||||
Deus salve o gnu parallel
|
Deus salve o gnu parallel
|
||||||
-- marcos @guv_Tuv@twitter
|
-- marcos @guv_Tuv@twitter
|
||||||
|
|
||||||
@a201
|
@a
|
||||||
4
|
4
|
||||||
اليوم علمت بأداة تساعد على تشغيل أوامر الصدفة بشكل متوازي حسب عدد الأنوية الموجودة مما يجعلها أداة أساسية في عدة تنفيذ المهام.
|
اليوم علمت بأداة تساعد على تشغيل أوامر الصدفة بشكل متوازي حسب عدد الأنوية الموجودة مما يجعلها أداة أساسية في عدة تنفيذ المهام.
|
||||||
الأداة اسمها gnu parallel
|
الأداة اسمها gnu parallel
|
||||||
|
|
|
@ -254,37 +254,25 @@ from:tange@gnu.org
|
||||||
to:parallel@gnu.org, bug-parallel@gnu.org
|
to:parallel@gnu.org, bug-parallel@gnu.org
|
||||||
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
|
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
|
||||||
|
|
||||||
Subject: GNU Parallel 20220222 ('Donetsk Luhansk') released
|
Subject: GNU Parallel 20220322 ('<<>>') released [stable]
|
||||||
|
|
||||||
GNU Parallel 20220222 ('Donetsk Luhansk') has been released. It is available for download at: lbry://@GnuParallel:4
|
GNU Parallel 20220322 ('<<>>') has been released. It is available for download at: lbry://@GnuParallel:4
|
||||||
|
|
||||||
This release has a major change in the remote code. This makes this release beta quality.
|
No new functionality was introduced so this is a good candidate for a stable release.
|
||||||
|
|
||||||
Quote of the month:
|
Quote of the month:
|
||||||
|
|
||||||
I also prefer gnu parallel. Mainly because it makes embarrassingly
|
<<>>
|
||||||
parallel tasks embarrassingly easy to run on the command line.
|
|
||||||
-- Vincent D. Warmerdam @fishnets88@twitter
|
|
||||||
|
|
||||||
New in this release:
|
New in this release:
|
||||||
|
|
||||||
* Encoding of remote commands has changed. This limits the length of remote commands to less than half. It also requires $REMOTE_TMPDIR to be writable.
|
<<>>
|
||||||
|
|
||||||
* Time functions hh_mm_ss() hhmmss() hh_mm() hhmm() are now available for {= =}.
|
|
||||||
|
|
||||||
* parallel_options_map.pdf is a map showing which options other options relate to.
|
|
||||||
|
|
||||||
* {uniq} added to --plus to only run jobs with unique values.
|
|
||||||
|
|
||||||
* Bug fixes and man page updates: Many options now have a 'See also' section.
|
* Bug fixes and man page updates: Many options now have a 'See also' section.
|
||||||
|
|
||||||
News about GNU Parallel:
|
News about GNU Parallel:
|
||||||
|
|
||||||
* HPC at Noon - GNU Parallel u SLURM srun , 22 February 2022 https://kim.uni-hohenheim.de/en/96097?tx_ttnews%5Btt_news%5D=53919&cHash=985f4f4ac1a166d180d81f6e9be832a3
|
<<>>
|
||||||
|
|
||||||
* linux 命令 -- parallel https://blog.csdn.net/qq_38197157/article/details/112596389
|
|
||||||
|
|
||||||
* Iterating Over Each Line of ls -l Output https://www.baeldung.com/linux/iterating-ls-l-output
|
|
||||||
|
|
||||||
Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html
|
Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html
|
||||||
|
|
||||||
|
|
|
@ -385,7 +385,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20220222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220223 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
|
|
|
@ -385,7 +385,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20220222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220223 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
|
|
|
@ -385,7 +385,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20220222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220223 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
|
|
|
@ -363,7 +363,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20220222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220223 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
|
|
|
@ -365,7 +365,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20220222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220223 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
|
|
|
@ -390,7 +390,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20220222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220223 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
|
|
|
@ -355,7 +355,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20220222 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220223 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
use strict;
|
use strict;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
$Global::progname="niceload";
|
$Global::progname="niceload";
|
||||||
$Global::version = 20220222;
|
$Global::version = 20220223;
|
||||||
Getopt::Long::Configure("bundling","require_order");
|
Getopt::Long::Configure("bundling","require_order");
|
||||||
get_options_from_array(\@ARGV) || die_usage();
|
get_options_from_array(\@ARGV) || die_usage();
|
||||||
if($opt::version) {
|
if($opt::version) {
|
||||||
|
|
|
@ -2313,7 +2313,7 @@ sub check_invalid_option_combinations() {
|
||||||
|
|
||||||
sub init_globals() {
|
sub init_globals() {
|
||||||
# Defaults:
|
# Defaults:
|
||||||
$Global::version = 20220222;
|
$Global::version = 20220223;
|
||||||
$Global::progname = 'parallel';
|
$Global::progname = 'parallel';
|
||||||
$::name = "GNU Parallel";
|
$::name = "GNU Parallel";
|
||||||
$Global::infinity = 2**31;
|
$Global::infinity = 2**31;
|
||||||
|
|
|
@ -205,7 +205,7 @@ Sequence number of the job to run.
|
||||||
This replacement string will be replaced by the sequence number of the
|
This replacement string will be replaced by the sequence number of the
|
||||||
job being run. It contains the same number as $PARALLEL_SEQ.
|
job being run. It contains the same number as $PARALLEL_SEQ.
|
||||||
|
|
||||||
See also: B<{#}> B<--seqreplace>
|
See also: B<{}> B<--seqreplace>
|
||||||
|
|
||||||
|
|
||||||
=item B<{%}>
|
=item B<{%}>
|
||||||
|
|
|
@ -122,7 +122,7 @@ GetOptions(
|
||||||
"help" => \$opt::dummy,
|
"help" => \$opt::dummy,
|
||||||
) || exit(255);
|
) || exit(255);
|
||||||
$Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1];
|
$Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1];
|
||||||
$Global::version = 20220222;
|
$Global::version = 20220223;
|
||||||
if($opt::version) { version(); exit 0; }
|
if($opt::version) { version(); exit 0; }
|
||||||
@Global::sortoptions = grep { ! /^-D$/ }
|
@Global::sortoptions = grep { ! /^-D$/ }
|
||||||
shell_quote(@ARGV_before[0..($#ARGV_before-$#ARGV-1)]);
|
shell_quote(@ARGV_before[0..($#ARGV_before-$#ARGV-1)]);
|
||||||
|
|
|
@ -1,5 +1,26 @@
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
# Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free
|
||||||
|
# Software Foundation, Inc.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, see <https://www.gnu.org/licenses/>
|
||||||
|
# or write to the Free Software Foundation, Inc., 51 Franklin St,
|
||||||
|
# Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# Convert .pod file containing:
|
# Convert .pod file containing:
|
||||||
#
|
#
|
||||||
# =item --option
|
# =item --option
|
||||||
|
|
2
src/sql
2
src/sql
|
@ -600,7 +600,7 @@ $Global::Initfile && unlink $Global::Initfile;
|
||||||
exit ($err);
|
exit ($err);
|
||||||
|
|
||||||
sub parse_options {
|
sub parse_options {
|
||||||
$Global::version = 20220222;
|
$Global::version = 20220223;
|
||||||
$Global::progname = 'sql';
|
$Global::progname = 'sql';
|
||||||
|
|
||||||
# This must be done first as this may exec myself
|
# This must be done first as this may exec myself
|
||||||
|
|
|
@ -18,6 +18,15 @@ echo TODO
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
par_ssh_ssh() {
|
||||||
|
echo '### bug #61894: Pack ssh code in eval protection'
|
||||||
|
echo Unquoted ssh should work
|
||||||
|
parallel --ssh 'ssh lo ssh' -S lo 'hostname;echo' ::: OK
|
||||||
|
parallel --ssh 'eval ssh lo ssh' -S lo 'hostname;echo' ::: OK
|
||||||
|
parallel --ssh 'eval ssh lo eval ssh' -S lo 'hostname;echo' ::: OK
|
||||||
|
parallel --ssh 'sshpass ssh bash@lo eval ssh' -S csh@lo 'hostname;echo' ::: OK
|
||||||
|
}
|
||||||
|
|
||||||
par_stop_if_no_hosts_left() {
|
par_stop_if_no_hosts_left() {
|
||||||
echo '### Stop if all hosts are filtered and there are no hosts left to run on'
|
echo '### Stop if all hosts are filtered and there are no hosts left to run on'
|
||||||
stdout parallel --filter-hosts -S no-such.host echo ::: 1
|
stdout parallel --filter-hosts -S no-such.host echo ::: 1
|
||||||
|
|
|
@ -83,6 +83,16 @@ par_remote_nice 5
|
||||||
par_ssh ### use --ssh
|
par_ssh ### use --ssh
|
||||||
par_ssh Run through BARSSH?
|
par_ssh Run through BARSSH?
|
||||||
par_ssh BARSSH
|
par_ssh BARSSH
|
||||||
|
par_ssh_ssh ### bug #61894: Pack ssh code in eval protection
|
||||||
|
par_ssh_ssh Unquoted ssh should work
|
||||||
|
par_ssh_ssh aspire
|
||||||
|
par_ssh_ssh OK
|
||||||
|
par_ssh_ssh aspire
|
||||||
|
par_ssh_ssh OK
|
||||||
|
par_ssh_ssh aspire
|
||||||
|
par_ssh_ssh OK
|
||||||
|
par_ssh_ssh aspire
|
||||||
|
par_ssh_ssh OK
|
||||||
par_stop_if_no_hosts_left ### Stop if all hosts are filtered and there are no hosts left to run on
|
par_stop_if_no_hosts_left ### Stop if all hosts are filtered and there are no hosts left to run on
|
||||||
par_stop_if_no_hosts_left parallel: Warning: Removed no-such.host.
|
par_stop_if_no_hosts_left parallel: Warning: Removed no-such.host.
|
||||||
par_stop_if_no_hosts_left parallel: Error: Cannot run any jobs.
|
par_stop_if_no_hosts_left parallel: Error: Cannot run any jobs.
|
||||||
|
|
Loading…
Reference in a new issue