I don't know of any script, but you could probably create one. Here's how it could work:
Person clicks on a link to download ebook. That link goes to a blank (to the user) page.
This blank page has some code which will create an entry in a database or file with a random string followed by the file that they want to download. The user is then immediately redirected to a page with that random string in the url (perhaps dl.php?s=[random string goes here])
The dl.php script fetches the file (which would need to be outside of the webroot, so that the user can't simply find the file from the filename) and then deletes the corresponding entry from the database or file. This way, they need to go back to the download link in order to redownload the file, and can't simply give the link to someone else, because the entry in the database would have already been deleted, so dl.php wouldn't know what file to get.