diff --git a/cli/src/main/java/org/onosproject/cli/Comparators.java b/cli/src/main/java/org/onosproject/cli/Comparators.java
index 06db5d1..0ab6845 100644
--- a/cli/src/main/java/org/onosproject/cli/Comparators.java
+++ b/cli/src/main/java/org/onosproject/cli/Comparators.java
@@ -15,11 +15,10 @@
  */
 package org.onosproject.cli;
 
-import java.util.Comparator;
-
 import org.onosproject.cluster.ControllerNode;
 import org.onosproject.core.Application;
 import org.onosproject.core.ApplicationId;
+import org.onosproject.incubator.net.intf.Interface;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.Element;
 import org.onosproject.net.ElementId;
@@ -29,6 +28,8 @@
 import org.onosproject.net.host.PortAddresses;
 import org.onosproject.net.topology.TopologyCluster;
 
+import java.util.Comparator;
+
 /**
  * Various comparators.
  */
@@ -119,4 +120,7 @@
         }
     };
 
+    public static final Comparator<Interface> INTERFACES_COMPARATOR = (intf1, intf2) ->
+            CONNECT_POINT_COMPARATOR.compare(intf1.connectPoint(), intf2.connectPoint());
+
 }
diff --git a/cli/src/main/java/org/onosproject/cli/net/InterfacesListCommand.java b/cli/src/main/java/org/onosproject/cli/net/InterfacesListCommand.java
new file mode 100644
index 0000000..aa93eb9
--- /dev/null
+++ b/cli/src/main/java/org/onosproject/cli/net/InterfacesListCommand.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.cli.net;
+
+import com.google.common.collect.Lists;
+import org.apache.karaf.shell.commands.Command;
+import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.cli.Comparators;
+import org.onosproject.incubator.net.intf.Interface;
+import org.onosproject.incubator.net.intf.InterfaceService;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Lists all configured interfaces.
+ */
+@Command(scope = "onos", name = "interfaces",
+        description = "Lists all configured interfaces.")
+public class InterfacesListCommand extends AbstractShellCommand {
+
+    private static final String FORMAT =
+            "port=%s/%s, ips=%s, mac=%s, vlan=%s";
+
+    @Override
+    protected void execute() {
+        InterfaceService interfaceService = get(InterfaceService.class);
+
+        List<Interface> interfaces = Lists.newArrayList(interfaceService.getInterfaces());
+
+        Collections.sort(interfaces, Comparators.INTERFACES_COMPARATOR);
+
+        for (Interface intf : interfaces) {
+            print(FORMAT, intf.connectPoint().deviceId(), intf.connectPoint().port(),
+                    intf.ipAddresses(), intf.mac(), intf.vlan());
+        }
+    }
+
+}
diff --git a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
index 65dec14..4912c82 100644
--- a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -323,6 +323,9 @@
         <command>
             <action class="org.onosproject.cli.net.AddressBindingsListCommand"/>
         </command>
+        <command>
+            <action class="org.onosproject.cli.net.InterfacesListCommand"/>
+        </command>
 
         <command>
             <action class="org.onosproject.cli.net.GroupsListCommand"/>
@@ -365,7 +368,7 @@
                 <entry key="-a" value-ref="allAppNameCompleter"/>
             </optional-completers>
         </command>
-        
+
         <command>
             <action class="org.onosproject.cli.net.GlobalLabelCommand"/>
         </command>
