Is there a way to send ether from my address to another address on ethereum main net without using any intermediary tools or services. That is, I don't want to use third party wallets or web sites or exchanges. Interact directly with the ethereum network. Is there a way to do that?
Assuming that you're defining "middle men" as "third-party wallets or web sites or exchanges", then you can avoid all middle men by broadcast your signed transaction directly to a bunch of live Ethereum nodes.
Using existing Ethereum implementations
If you're willing to not consider
geth (or some other Ethereum implementation) as a middle man, then you can use the implementation to sign and send transactions. Here are some docs on how to do this.
Not using existing Ethereum implementations
You may consider
geth (and other third-party implementations of the Ethereum protocol) as falling under the "middle men" definition here. In that case, you'd want to construct and broadcast the transaction over the wire yourself to live Ethereum nodes.
You'll probably end up needing to implement some of the Ethereum protocol; notably you'd need to implement parts of the Ethereum Wire Protocol and the Node Discovery Protocol if you don't already know the IPs of some nodes, you'd also need to implement the relevant parts of the protocols that the previous protocols depend on like RLP, JSON-RPC.
This question begs a more philosophical question of "who do you trust?" and "who really are the middle men you want or need to avoid?". Here is an incomplete list of pieces of the puzzle we often implicitly take for granted as middle men:
- Coinbase, Binance, or other centralized exchanges.
- MetaMask, MyEtherWallet, Trust, or other software wallets.
- Trezor, Ledger, or other hardware wallets.
- Infura, Alchemy, or other centralized Ethereum gateways.
- Etherscan, MyCrypto, Blockchair, or other websites that let you broadcast transactions directly.
geth, OpenEthereum, Py-EVM, or other Ethereum protocol implementations.
- Any of the numerous open-source libraries that these implementations use.
CPython, or other language implemenations.
- Linux and GNU, Windows, MacOS, or whatever other OS.
- Wi-Fi or Ethernet implementations.
- Software or hardware of the internet router or modem.
- The physical wires, relays, and other networking equipment that make up the internet.
- The hardware that all this stuff is running on.
- Yourself? It's not unlikely that you'll make a critical mistake implementing complex protocols on your own.
I realize this is a bit pedantic, but it is worth defining explicitly and exactly (and I do mean exactly) who the middle men you are willing to keep as middle men are, if that is something you care about.
But I think for the purposes of this question, the answer is probably "you can use