grep on remote machine
I have a template file with content
count : 2
ssh ubuntu@ip << EOF
cat template|grep count|awk -F":" '{print $2}' > log
EOF
Desired output is 2
but it's printing count : 2
ssh grep remote
New contributor
add a comment |
I have a template file with content
count : 2
ssh ubuntu@ip << EOF
cat template|grep count|awk -F":" '{print $2}' > log
EOF
Desired output is 2
but it's printing count : 2
ssh grep remote
New contributor
1) You don't needcat
. 2) Add the contents of the file to your question.
– Nasir Riley
1 hour ago
What have you done to debug?
– G-Man
42 mins ago
add a comment |
I have a template file with content
count : 2
ssh ubuntu@ip << EOF
cat template|grep count|awk -F":" '{print $2}' > log
EOF
Desired output is 2
but it's printing count : 2
ssh grep remote
New contributor
I have a template file with content
count : 2
ssh ubuntu@ip << EOF
cat template|grep count|awk -F":" '{print $2}' > log
EOF
Desired output is 2
but it's printing count : 2
ssh grep remote
ssh grep remote
New contributor
New contributor
New contributor
asked 1 hour ago
krishnankrishnan
1
1
New contributor
New contributor
1) You don't needcat
. 2) Add the contents of the file to your question.
– Nasir Riley
1 hour ago
What have you done to debug?
– G-Man
42 mins ago
add a comment |
1) You don't needcat
. 2) Add the contents of the file to your question.
– Nasir Riley
1 hour ago
What have you done to debug?
– G-Man
42 mins ago
1) You don't need
cat
. 2) Add the contents of the file to your question.– Nasir Riley
1 hour ago
1) You don't need
cat
. 2) Add the contents of the file to your question.– Nasir Riley
1 hour ago
What have you done to debug?
– G-Man
42 mins ago
What have you done to debug?
– G-Man
42 mins ago
add a comment |
1 Answer
1
active
oldest
votes
The here-document << EOF
creates a quoting context similar to "..."
in which variables are expanded. You have a $2
in there, which is expanded by the local shell. (The apostrophes don't quote anything because they are inside the larger quoted string (heredoc) so they are not special characters. You can't "increase the quoting level" by nesting '...'
inside "..."
)
Your local shell probably doesn't have a $2
parameter, so it expands to the empty string, and what the remote shell receives on stdin is:
cat template|grep count|awk -F":" '{print }' > log
And awk print
s the whole line.
You can ask the heredoc operator not to expand variables by adding apostrophe-style quoting to terminating string, like this:
ssh ... << 'EOF'
...
EOF
If you do that to your example, the $2
will survive heredoc processing and be passed through ssh to the remote shell.
Additional tip: cat | grep | awk
is doubly wasteful, since awk
can do all that. Your remote command is equivalent to
awk -F":" '/count/ {print $2}' template > log
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
krishnan is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f508631%2fgrep-on-remote-machine%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The here-document << EOF
creates a quoting context similar to "..."
in which variables are expanded. You have a $2
in there, which is expanded by the local shell. (The apostrophes don't quote anything because they are inside the larger quoted string (heredoc) so they are not special characters. You can't "increase the quoting level" by nesting '...'
inside "..."
)
Your local shell probably doesn't have a $2
parameter, so it expands to the empty string, and what the remote shell receives on stdin is:
cat template|grep count|awk -F":" '{print }' > log
And awk print
s the whole line.
You can ask the heredoc operator not to expand variables by adding apostrophe-style quoting to terminating string, like this:
ssh ... << 'EOF'
...
EOF
If you do that to your example, the $2
will survive heredoc processing and be passed through ssh to the remote shell.
Additional tip: cat | grep | awk
is doubly wasteful, since awk
can do all that. Your remote command is equivalent to
awk -F":" '/count/ {print $2}' template > log
add a comment |
The here-document << EOF
creates a quoting context similar to "..."
in which variables are expanded. You have a $2
in there, which is expanded by the local shell. (The apostrophes don't quote anything because they are inside the larger quoted string (heredoc) so they are not special characters. You can't "increase the quoting level" by nesting '...'
inside "..."
)
Your local shell probably doesn't have a $2
parameter, so it expands to the empty string, and what the remote shell receives on stdin is:
cat template|grep count|awk -F":" '{print }' > log
And awk print
s the whole line.
You can ask the heredoc operator not to expand variables by adding apostrophe-style quoting to terminating string, like this:
ssh ... << 'EOF'
...
EOF
If you do that to your example, the $2
will survive heredoc processing and be passed through ssh to the remote shell.
Additional tip: cat | grep | awk
is doubly wasteful, since awk
can do all that. Your remote command is equivalent to
awk -F":" '/count/ {print $2}' template > log
add a comment |
The here-document << EOF
creates a quoting context similar to "..."
in which variables are expanded. You have a $2
in there, which is expanded by the local shell. (The apostrophes don't quote anything because they are inside the larger quoted string (heredoc) so they are not special characters. You can't "increase the quoting level" by nesting '...'
inside "..."
)
Your local shell probably doesn't have a $2
parameter, so it expands to the empty string, and what the remote shell receives on stdin is:
cat template|grep count|awk -F":" '{print }' > log
And awk print
s the whole line.
You can ask the heredoc operator not to expand variables by adding apostrophe-style quoting to terminating string, like this:
ssh ... << 'EOF'
...
EOF
If you do that to your example, the $2
will survive heredoc processing and be passed through ssh to the remote shell.
Additional tip: cat | grep | awk
is doubly wasteful, since awk
can do all that. Your remote command is equivalent to
awk -F":" '/count/ {print $2}' template > log
The here-document << EOF
creates a quoting context similar to "..."
in which variables are expanded. You have a $2
in there, which is expanded by the local shell. (The apostrophes don't quote anything because they are inside the larger quoted string (heredoc) so they are not special characters. You can't "increase the quoting level" by nesting '...'
inside "..."
)
Your local shell probably doesn't have a $2
parameter, so it expands to the empty string, and what the remote shell receives on stdin is:
cat template|grep count|awk -F":" '{print }' > log
And awk print
s the whole line.
You can ask the heredoc operator not to expand variables by adding apostrophe-style quoting to terminating string, like this:
ssh ... << 'EOF'
...
EOF
If you do that to your example, the $2
will survive heredoc processing and be passed through ssh to the remote shell.
Additional tip: cat | grep | awk
is doubly wasteful, since awk
can do all that. Your remote command is equivalent to
awk -F":" '/count/ {print $2}' template > log
answered 46 mins ago
Wumpus Q. WumbleyWumpus Q. Wumbley
4,7401322
4,7401322
add a comment |
add a comment |
krishnan is a new contributor. Be nice, and check out our Code of Conduct.
krishnan is a new contributor. Be nice, and check out our Code of Conduct.
krishnan is a new contributor. Be nice, and check out our Code of Conduct.
krishnan is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f508631%2fgrep-on-remote-machine%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1) You don't need
cat
. 2) Add the contents of the file to your question.– Nasir Riley
1 hour ago
What have you done to debug?
– G-Man
42 mins ago