cron processing only half of script
up vote
0
down vote
favorite
script:
curl -s http://api.ipify.org > ~/ip.txt && [[ -s ~/ip.txt ]] && ip=$(cat ip.txt) && echo $ip > ~/newIP.txt || echo WAN IP is blank: curl, latency or internet issue
# logger -s WAN IP is blank: curl, latency or internet issue
script run only up to:
curl -s http://api.ipify.org > ~/ip.txt && [[ -s ~/ip.txt ]] && ip=$(cat ip.txt)
the other part is ignored, BUT when I manually sh the script from terminal it execute properly.
Is there something I am doing wrong?
scripts cron curl
add a comment |
up vote
0
down vote
favorite
script:
curl -s http://api.ipify.org > ~/ip.txt && [[ -s ~/ip.txt ]] && ip=$(cat ip.txt) && echo $ip > ~/newIP.txt || echo WAN IP is blank: curl, latency or internet issue
# logger -s WAN IP is blank: curl, latency or internet issue
script run only up to:
curl -s http://api.ipify.org > ~/ip.txt && [[ -s ~/ip.txt ]] && ip=$(cat ip.txt)
the other part is ignored, BUT when I manually sh the script from terminal it execute properly.
Is there something I am doing wrong?
scripts cron curl
thanks Perl, that was the issue.
– grimdex
Dec 2 at 18:00
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
script:
curl -s http://api.ipify.org > ~/ip.txt && [[ -s ~/ip.txt ]] && ip=$(cat ip.txt) && echo $ip > ~/newIP.txt || echo WAN IP is blank: curl, latency or internet issue
# logger -s WAN IP is blank: curl, latency or internet issue
script run only up to:
curl -s http://api.ipify.org > ~/ip.txt && [[ -s ~/ip.txt ]] && ip=$(cat ip.txt)
the other part is ignored, BUT when I manually sh the script from terminal it execute properly.
Is there something I am doing wrong?
scripts cron curl
script:
curl -s http://api.ipify.org > ~/ip.txt && [[ -s ~/ip.txt ]] && ip=$(cat ip.txt) && echo $ip > ~/newIP.txt || echo WAN IP is blank: curl, latency or internet issue
# logger -s WAN IP is blank: curl, latency or internet issue
script run only up to:
curl -s http://api.ipify.org > ~/ip.txt && [[ -s ~/ip.txt ]] && ip=$(cat ip.txt)
the other part is ignored, BUT when I manually sh the script from terminal it execute properly.
Is there something I am doing wrong?
scripts cron curl
scripts cron curl
edited Dec 2 at 17:18
Doug Smythies
7,11631428
7,11631428
asked Dec 2 at 17:14
grimdex
265
265
thanks Perl, that was the issue.
– grimdex
Dec 2 at 18:00
add a comment |
thanks Perl, that was the issue.
– grimdex
Dec 2 at 18:00
thanks Perl, that was the issue.
– grimdex
Dec 2 at 18:00
thanks Perl, that was the issue.
– grimdex
Dec 2 at 18:00
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
It might be a matter of taste, but I personally consider
those u > v && w && x > y || z
one-liners unreadable
and especially un-debugable. If they work, they are fine,
but else they are a PITA to my mind.
In your case the mistake was the ip=$(cat ip.txt)
part
because cronjobs may or may not have the current working
directory set to $HOME. The preceeding … > ~/ip.txt
writes a file to your $HOME but the following cat ip.txt
tries to access the file ip.txt
from wherever directory
cat
was started in. The simple fix woul be to replace
cat ip.txt
with cat ~/ip.txt
.
Having said that, I suggest the following:
#!/usr/bin/env bash
if ip=$(curl -s -f http://api.ipify.org); then
echo "$ip" > ~/newIP.txt
else
echo "WAN IP is blank: curl, latency or internet issue"
fi
This relies on curl
returning a bad exit value (!=0) if it
cannot access the give site. If that is not the case, change the
the code to:
ip=$(curl -s -f http://api.ipify.org);
if [ "$ip" ]; then
…
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "89"
};
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',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
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
});
}
});
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%2faskubuntu.com%2fquestions%2f1097949%2fcron-processing-only-half-of-script%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
up vote
0
down vote
It might be a matter of taste, but I personally consider
those u > v && w && x > y || z
one-liners unreadable
and especially un-debugable. If they work, they are fine,
but else they are a PITA to my mind.
In your case the mistake was the ip=$(cat ip.txt)
part
because cronjobs may or may not have the current working
directory set to $HOME. The preceeding … > ~/ip.txt
writes a file to your $HOME but the following cat ip.txt
tries to access the file ip.txt
from wherever directory
cat
was started in. The simple fix woul be to replace
cat ip.txt
with cat ~/ip.txt
.
Having said that, I suggest the following:
#!/usr/bin/env bash
if ip=$(curl -s -f http://api.ipify.org); then
echo "$ip" > ~/newIP.txt
else
echo "WAN IP is blank: curl, latency or internet issue"
fi
This relies on curl
returning a bad exit value (!=0) if it
cannot access the give site. If that is not the case, change the
the code to:
ip=$(curl -s -f http://api.ipify.org);
if [ "$ip" ]; then
…
add a comment |
up vote
0
down vote
It might be a matter of taste, but I personally consider
those u > v && w && x > y || z
one-liners unreadable
and especially un-debugable. If they work, they are fine,
but else they are a PITA to my mind.
In your case the mistake was the ip=$(cat ip.txt)
part
because cronjobs may or may not have the current working
directory set to $HOME. The preceeding … > ~/ip.txt
writes a file to your $HOME but the following cat ip.txt
tries to access the file ip.txt
from wherever directory
cat
was started in. The simple fix woul be to replace
cat ip.txt
with cat ~/ip.txt
.
Having said that, I suggest the following:
#!/usr/bin/env bash
if ip=$(curl -s -f http://api.ipify.org); then
echo "$ip" > ~/newIP.txt
else
echo "WAN IP is blank: curl, latency or internet issue"
fi
This relies on curl
returning a bad exit value (!=0) if it
cannot access the give site. If that is not the case, change the
the code to:
ip=$(curl -s -f http://api.ipify.org);
if [ "$ip" ]; then
…
add a comment |
up vote
0
down vote
up vote
0
down vote
It might be a matter of taste, but I personally consider
those u > v && w && x > y || z
one-liners unreadable
and especially un-debugable. If they work, they are fine,
but else they are a PITA to my mind.
In your case the mistake was the ip=$(cat ip.txt)
part
because cronjobs may or may not have the current working
directory set to $HOME. The preceeding … > ~/ip.txt
writes a file to your $HOME but the following cat ip.txt
tries to access the file ip.txt
from wherever directory
cat
was started in. The simple fix woul be to replace
cat ip.txt
with cat ~/ip.txt
.
Having said that, I suggest the following:
#!/usr/bin/env bash
if ip=$(curl -s -f http://api.ipify.org); then
echo "$ip" > ~/newIP.txt
else
echo "WAN IP is blank: curl, latency or internet issue"
fi
This relies on curl
returning a bad exit value (!=0) if it
cannot access the give site. If that is not the case, change the
the code to:
ip=$(curl -s -f http://api.ipify.org);
if [ "$ip" ]; then
…
It might be a matter of taste, but I personally consider
those u > v && w && x > y || z
one-liners unreadable
and especially un-debugable. If they work, they are fine,
but else they are a PITA to my mind.
In your case the mistake was the ip=$(cat ip.txt)
part
because cronjobs may or may not have the current working
directory set to $HOME. The preceeding … > ~/ip.txt
writes a file to your $HOME but the following cat ip.txt
tries to access the file ip.txt
from wherever directory
cat
was started in. The simple fix woul be to replace
cat ip.txt
with cat ~/ip.txt
.
Having said that, I suggest the following:
#!/usr/bin/env bash
if ip=$(curl -s -f http://api.ipify.org); then
echo "$ip" > ~/newIP.txt
else
echo "WAN IP is blank: curl, latency or internet issue"
fi
This relies on curl
returning a bad exit value (!=0) if it
cannot access the give site. If that is not the case, change the
the code to:
ip=$(curl -s -f http://api.ipify.org);
if [ "$ip" ]; then
…
edited Dec 2 at 19:00
answered Dec 2 at 18:27
PerlDuck
5,07911230
5,07911230
add a comment |
add a comment |
Thanks for contributing an answer to Ask Ubuntu!
- 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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2faskubuntu.com%2fquestions%2f1097949%2fcron-processing-only-half-of-script%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
thanks Perl, that was the issue.
– grimdex
Dec 2 at 18:00