News for hackers. Stuff that matters.
Re:HardCIDR will query ARIN and a pool of BGP route servers by natch on Saturday March 18, 2017 @12:56AM (#13899955)
Beware, this script will hose / clobber and then silently clean up (delete) a ton of various different files if files with those names happen to already exist. To see the exact file names you'll have to carefully pick through the script. So obviously? run it in its own directory, which is no guarantee of safety, but should be safer.

If you have a subdirectory where you run it named after your email hostname (such as "example/" for "example.com"), then it will prompt you to "overwrite the contents of the directory" and then, if you accept, it will not only overwrite the contents, it will remove the entire contents with:

    cd $outdir
    rm * 2>/dev/null
There's a slight violation of user expectations here. Removing and replacing the contents isn't quite the same as overwriting the contents. It may be a fine line, but it's better to err on the side of protecting the user's files, not deleting them, when deciding where to come down on that fine line.

And if $outdir is empty or not there, it tries to detect that by first doing a check for -d $outdir, but this won't save the user if $outdir gets moved aside by another process while they are reading the prompt and before the cd happens, leaving them in another directory. Hopefully the user has rm aliased to rm -i but that still won't help since the rm is being run in its own shell in the script.

I know we're not supposed to focus on the negative here on HN. I'm sure the script is awesome for whatever it does. Just be careful out there!

Re:HardCIDR will query ARIN and a pool of BGP route servers by joshka on Saturday March 18, 2017 @03:57AM (#13900387)
You seem to have a good eye for picking up problems in scripts, and enough of an interest to write about it. Have you considered submitting a PR with your suggested changes, or if you don't have time for that, perhaps an issue with your problems?
Re:HardCIDR will query ARIN and a pool of BGP route servers by natch on Saturday March 18, 2017 @12:05PM (#13901880)
No, because the README for this project leaves me having utterly no idea who the audience is, what it is for, why it exists, etc., so I wouldn't feel I have the right background to do a proper PR against it.
Re:HardCIDR will query ARIN and a pool of BGP route servers by CJefferson on Saturday March 18, 2017 @11:00AM (#13901536)
I wish modern OSes made this easier. I would love to have an easy bullrtproof way of saying "give me a temp directory for writing, don't let me write anywhere else, clean up my directory after me".
Re:HardCIDR will query ARIN and a pool of BGP route servers by cheeseprocedure on Saturday March 18, 2017 @11:30AM (#13901668)
Chances are that every system this script runs on has "mktemp," and trapping exit makes it easy to clean up when things are finished.

https://www.mktemp.org/manual.html

http://redsymbol.net/articles/bash-exit-traps/

Re:HardCIDR will query ARIN and a pool of BGP route servers by peterwwillis on Saturday March 18, 2017 @11:54AM (#13901810)
Yep, makes it much simpler to write scripts like this https://github.com/psypete/public-bin/blob/public-bin/src/st... (run an application that's stored in git, but in a temp working directory, and clean up after)
Re:HardCIDR will query ARIN and a pool of BGP route servers by CJefferson on Saturday March 18, 2017 @06:03PM (#13903748)
But, how can I make super sure some combination of my mistakes, undefined variables, failed cd commands, race conditions, etc, can't lead to me clearing the wrong directory.

I'm sure this is excessive paranoia, but I have never been confident to release a script that classes a directory, I'm to worked about things like subtle differences in how mktemp works on linux and mac for example.

Re:HardCIDR will query ARIN and a pool of BGP route servers by stuuuuuuuuu on Saturday March 18, 2017 @01:06PM (#13902247)
A good usecase for Docker, maybe? Put the script in a container and let it run wild, then delete the container when it's done.
Re:HardCIDR will query ARIN and a pool of BGP route servers by the8472 on Saturday March 18, 2017 @12:23PM (#13901981)
on linux the following might work:

    - enter a user and mount namespace
    - mount a tmpfs, e.g. over /tmp
    - remount everything else as readonly
alternatively

    firejail --overlay-tmpfs <command>
Re:HardCIDR will query ARIN and a pool of BGP route servers by LinuxBender on Saturday March 18, 2017 @03:35AM (#13900328)
That is bad. One should always use set -u on scripts that rm any files or perform any destructive actions. One can always unset that if you need to accept args further along in a script to use in a variable.