It's very difficult to retrofit unit-tests into legacy code (that is code without unit-tests). There is a book about this: Working effectively on legacy code. Unit-testing should be applied when developing new code.
It's not easy to recommend tools without information on the type of the product that is being testing. You might have to add internal interfaces so that test tools can poke the product: to test a GUI-based application, you can add an undocumented option to supply a command file that will simulate user actions.
Look at the more tedious and error-prone tasks of the manual testing, what testers complain the most of.
Automate your tests steps by steps, for instance, tests execution first and results verification (PASS/FAIL criteria) in a second phase.
Keep hard tasks manual (e.g. installation, configuration) in the beginning.
In short, apply a low hanging fruit strategy.
Also strive to reproduce every problem fixed in the codebase with an automatic test, this will help verification on the fix and constitute automatic regression testing.
Scripting (bash, Perl, Powershell, whatever) is certainly helpful when dealing with automation.