Donald Trump insisted the US bombed a top Iran general to "stop a war" - as the US fears revenge attacks in major cities.